From 6b6ddacd0aa911785ce35487ad746d0ca4c01a30 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 2 Nov 2010 14:03:31 +0000 Subject: [PATCH] * email: Sort FunctionFolders to the top of the FolderTree in MainView (all MailBox FolderTree Views are affected) --- felamimail/inc/class.bofelamimail.inc.php | 38 ++++++++++++++----- felamimail/inc/class.felamimail_hooks.inc.php | 2 +- felamimail/inc/class.uiwidgets.inc.php | 20 ++++++++-- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/felamimail/inc/class.bofelamimail.inc.php b/felamimail/inc/class.bofelamimail.inc.php index b4cda5eae7..918758a06e 100644 --- a/felamimail/inc/class.bofelamimail.inc.php +++ b/felamimail/inc/class.bofelamimail.inc.php @@ -61,7 +61,7 @@ * foldernames are subject to translation, keep that in mind too, if you change names here. * @var array */ - var $autoFolders = array('Drafts', 'Junk', 'Sent', 'Trash', 'Templates'); + static $autoFolders = array('Drafts', 'Templates', 'Sent', 'Trash', 'Junk'); /** * Autoload classes from emailadmin, 'til they get autoloading conform names @@ -1277,7 +1277,7 @@ $retValue['shortDisplayName'] = lang('INBOX'); } // translate the automatic Folders (Sent, Drafts, ...) like the INBOX - elseif (in_array($retValue['shortName'],$this->autoFolders)) + elseif (in_array($retValue['shortName'],self::$autoFolders)) { $retValue['displayName'] = $retValue['shortDisplayName'] = lang($retValue['shortName']); } @@ -1350,7 +1350,7 @@ $_subscribedOnly = false; } #$inboxData->attributes = 64; - $folders = array('INBOX' => $inboxData); + $inboxFolderObject = array('INBOX' => $inboxData); #_debug_array($folders); $nameSpace = $this->icServer->getNameSpaces(); @@ -1458,9 +1458,9 @@ } if ($this->mailPreferences->preferences['notavailableautofolders'] && !empty($this->mailPreferences->preferences['notavailableautofolders'])) { - $foldersToCheck = array_diff($this->autoFolders,explode(',',$this->mailPreferences->preferences['notavailableautofolders'])); + $foldersToCheck = array_diff(self::$autoFolders,explode(',',$this->mailPreferences->preferences['notavailableautofolders'])); } else { - $foldersToCheck = $this->autoFolders; + $foldersToCheck = self::$autoFolders; } #echo "foldersToCheck:";_debug_array($foldersToCheck); foreach($foldersToCheck as $personalFolderName) { @@ -1550,8 +1550,9 @@ $folderObject->displayName = lang('INBOX'); $folderObject->shortDisplayName = lang('INBOX'); $folderObject->subscribed = true; + // translate the automatic Folders (Sent, Drafts, ...) like the INBOX - } elseif (in_array($shortName,$this->autoFolders)) { + } elseif (in_array($shortName,self::$autoFolders)) { $tmpfolderparts = explode($delimiter,$folderObject->folderName); array_pop($tmpfolderparts); $folderObject->displayName = $this->encodeFolderName(implode($delimiter,$tmpfolderparts).$delimiter.lang($shortName)); @@ -1562,13 +1563,21 @@ $folderObject->shortDisplayName = $this->encodeFolderName($shortName); } $folderName = $folderName; - $folders[$folderName] = $folderObject; + if (in_array($shortName,self::$autoFolders)) { + $autoFolderObjects[$folderName] = $folderObject; + } else { + $folders[$folderName] = $folderObject; + } } } } - uasort($folders,array($this,"sortByDisplayName")); - //_debug_array($folders); #exit; - return $folders; + if (is_array($autoFolderObjects)) { + uasort($autoFolderObjects,array($this,"sortByAutoFolderPos")); + } + if (is_array($folders)) uasort($folders,array($this,"sortByDisplayName")); + $folders2return = array_merge($autoFolderObjects,$folders); + //_debug_array($folders2return); #exit; + return array_merge($inboxFolderObject,(array)$autoFolderObjects,(array)$folders); } function sortByDisplayName($a,$b) @@ -1577,6 +1586,15 @@ return strcasecmp($a->displayName,$b->displayName); } + function sortByAutoFolderPos($a,$b) + { + // 0, 1 und -1 + $pos1 = array_search($a->shortFolderName,self::$autoFolders); + $pos2 = array_search($b->shortFolderName,self::$autoFolders); + if ($pos1 == $pos2) return 0; + return ($pos1 < $pos2) ? -1 : 1; + } + function getMailBoxCounters($folderName) { $folderStatus = $this->icServer->getStatus($folderName); diff --git a/felamimail/inc/class.felamimail_hooks.inc.php b/felamimail/inc/class.felamimail_hooks.inc.php index a24527beef..6d04f93f1c 100644 --- a/felamimail/inc/class.felamimail_hooks.inc.php +++ b/felamimail/inc/class.felamimail_hooks.inc.php @@ -56,7 +56,7 @@ class felamimail_hooks } $availableAutoFolders['none'] = lang('none, create all'); - foreach($bofelamimail->autoFolders as $aname) { + foreach(bofelamimail::$autoFolders as $aname) { $availableAutoFolders[$aname] = lang($aname); } diff --git a/felamimail/inc/class.uiwidgets.inc.php b/felamimail/inc/class.uiwidgets.inc.php index a198817377..dbaeb11958 100644 --- a/felamimail/inc/class.uiwidgets.inc.php +++ b/felamimail/inc/class.uiwidgets.inc.php @@ -147,9 +147,23 @@ #_debug_array($allFolders); foreach($allFolders as $longName => $obj) { $messageCount = ''; - $image1 = "'folderClosed.gif'"; - $image2 = "0"; - $image3 = "0"; + + if (in_array($obj->shortFolderName,bofelamimail::$autoFolders)) + { + //echo $obj->shortFolderName.'
'; + $image1 = $image2 = $image3 = "'MailFolder".$obj->shortFolderName.".png'"; + //$image2 = "'MailFolderPlain.png'"; + //$image3 = "'MailFolderPlain.png'"; + } + elseif (in_array($longName,$userDefinedFunctionFolders)) + { + $key = array_search($longName,$userDefinedFunctionFolders); + $image1 = $image2 = $image3 = "'MailFolder".$key.".png'"; + } + else + { + $image1 = $image2 = $image3 = "'folderClosed.gif'"; + } $folderParts = explode($obj->delimiter, $longName);