diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php
index 7e418f7ad8..6711c920e8 100644
--- a/mail/inc/class.mail_ui.inc.php
+++ b/mail/inc/class.mail_ui.inc.php
@@ -687,13 +687,13 @@ class mail_ui
array_unshift($fFP,$this->mail_bo->profileID);
$oA['path'] = $fFP;
$path = $key; //$obj->folderName; //$obj->delimiter
- if ($fS['unseen']) $oA['text'] = ''.$oA['text'].' ('.$fS['unseen'].')';
if ($path=='INBOX')
{
$oA['im0'] = $oA['im1']= $oA['im2'] = "kfm_home.png";
}
elseif (in_array($obj->shortFolderName,mail_bo::$autoFolders))
{
+ $oA['text'] = lang($oA['text']);
//echo $obj->shortFolderName.'
';
$oA['im0'] = $oA['im1']= $oA['im2'] = "MailFolder".$obj->shortFolderName.".png";
//$image2 = "'MailFolderPlain.png'";
@@ -710,6 +710,7 @@ class mail_ui
$oA['im1'] = "folderOpen.gif";
$oA['im2'] = "MailFolderClosed.png"; // has Children
}
+ if ($fS['unseen']) $oA['text'] = ''.$oA['text'].' ('.$fS['unseen'].')';
$path = $this->mail_bo->profileID.self::$delimiter.$key; //$obj->folderName; //$obj->delimiter
$oA['id'] = $path; // ID holds the PATH
if (!empty($fS['attributes']) && stripos(array2string($fS['attributes']),'\noselect')!== false)
@@ -3228,6 +3229,7 @@ blockquote[type=cite] {
*/
function ajax_setFolderStatus($_folder)
{
+ translation::add_app('mail');
//error_log(__METHOD__.__LINE__.array2string($_folder));
if ($_folder)
{
@@ -3242,6 +3244,7 @@ blockquote[type=cite] {
if ($folderName)
{
$fS = $this->mail_bo->getFolderStatus($folderName,false);
+ if (in_array($fS['shortDisplayName'],mail_bo::$autoFolders)) $fS['shortDisplayName']=lang($fS['shortDisplayName']);
//error_log(__METHOD__.__LINE__.array2string($fS));
if ($fS['unseen'])
{
@@ -3334,6 +3337,7 @@ blockquote[type=cite] {
//error_log(__METHOD__.__LINE__.' OldFolderName:'.array2string($_folderName).' NewName:'.array2string($_newName));
if ($_folderName)
{
+ translation::add_app('mail');
$decodedFolderName = $this->mail_bo->decodeEntityFolderName($_folderName);
$_newName = $this->mail_bo->decodeEntityFolderName($_newName);
$del = $this->mail_bo->getHierarchyDelimiter(false);
@@ -3574,6 +3578,8 @@ blockquote[type=cite] {
$response = egw_json_response::get();
if ($success)
{
+ translation::add_app('mail');
+
$oldFolderInfo = $this->mail_bo->getFolderStatus($oldParentFolder,false);
$folderInfo = $this->mail_bo->getFolderStatus($parentFolder,false);
$refreshData = array(
@@ -3733,6 +3739,8 @@ blockquote[type=cite] {
// Send full info back in the response
if($getFolders)
{
+ translation::add_app('mail');
+
$refreshData = array(
$icServerID => $this->getFolderTree(true, $icServerID, true)
);
@@ -3748,6 +3756,7 @@ blockquote[type=cite] {
function ajax_refreshQuotaDisplay($icServerID=null)
{
//error_log(__METHOD__.__LINE__.array2string($icServerID));
+ translation::add_app('mail');
if (is_null($icServerID)) $icServerID = $this->mail_bo->profileID;
$rememberServerID = $this->mail_bo->profileID;
if ($icServerID && $icServerID != $this->mail_bo->profileID)
@@ -3789,7 +3798,9 @@ blockquote[type=cite] {
*/
function ajax_emptyTrash($icServerID)
{
- error_log(__METHOD__.__LINE__.' '.$icServerID);
+ //error_log(__METHOD__.__LINE__.' '.$icServerID);
+ translation::add_app('mail');
+
$rememberServerID = $this->mail_bo->profileID;
if ($icServerID && $icServerID != $this->mail_bo->profileID)
{
@@ -3824,7 +3835,9 @@ blockquote[type=cite] {
*/
function ajax_compressFolder($_folderName)
{
- error_log(__METHOD__.__LINE__.' '.$_folderName);
+ //error_log(__METHOD__.__LINE__.' '.$_folderName);
+ translation::add_app('mail');
+
$this->mail_bo->restoreSessionData();
$decodedFolderName = $this->mail_bo->decodeEntityFolderName($_folderName);
list($icServerID,$folderName) = explode(self::$delimiter,$decodedFolderName,2);
diff --git a/mail/js/app.js b/mail/js/app.js
index 7c77466f46..5f98f9bfb2 100644
--- a/mail/js/app.js
+++ b/mail/js/app.js
@@ -726,7 +726,7 @@ app.classes.mail = AppJS.extend(
var activeFolders = tree_wdg.getTreeNodeOpenItems(nodeToRefresh,mode2use);
//alert(activeFolders.join('#,#'));
- this.mail_queueRefreshFolderList(activeFolders);
+ this.mail_queueRefreshFolderList((mode=='thisfolderonly'&&nodeToRefresh?[_nodeID]:activeFolders));
if (_refreshGridArea)
{
// maybe to use the mode forced as trigger for grid reload and using the grids own autorefresh
@@ -770,28 +770,16 @@ app.classes.mail = AppJS.extend(
},
/**
- * Queues a refreshFolderList request for 1ms. Actually this will just execute the
+ * Queues a refreshFolderList request for 10ms. Actually this will just execute the
* code after the calling script has finished.
*/
mail_queueRefreshFolderList: function(_folders)
{
- this.mail_queuedFolders.push(_folders);
- this.mail_queuedFoldersIndex++;
-
- // Copy idx onto the anonymous function scope
- var idx = this.mail_queuedFoldersIndex;
- var self = this;
+ // as jsonq is too fast wrap it to be delayed a bit, to ensure the folder actions
+ // are executed last of the queue
window.setTimeout(function() {
- if (idx == self.mail_queuedFoldersIndex)
- {
- //var folders = mail_queuedFolders.join(",");
- self.mail_queuedFoldersIndex = 0;
- self.mail_queuedFolders = [];
-
- egw.json('mail.mail_ui.ajax_setFolderStatus',[_folders])
- .sendRequest(true);
- }
- }, 10);
+ egw.jsonq('mail.mail_ui.ajax_setFolderStatus',[_folders]);
+ }, 100);
},
/**
@@ -1170,6 +1158,14 @@ app.classes.mail = AppJS.extend(
{
var do_nmactions = true;
var msg;
+ var ftree;
+ var _folder;
+ if (_action.id=='read')
+ {
+ ftree = this.et2.getWidgetById(this.nm_index+'[foldertree]');
+ var _foldernode = ftree.getSelectedNode();
+ _folder = _foldernode.id;
+ }
if (typeof _elems == 'undefined')
{
do_nmactions = false;//indicates that this action is probably a popup?
@@ -1184,6 +1180,8 @@ app.classes.mail = AppJS.extend(
{
msg = {};
msg['msg'] = [this.mail_currentlyFocussed];
+ _elems = msg;
+ do_nmactions = true;// is triggered from preview
}
}
}
@@ -1271,7 +1269,8 @@ app.classes.mail = AppJS.extend(
{
this.mail_flagMessages(_action.id,msg_set);
}
- // No further update needed
+ // No further update needed, only in case of read, the counters should be refreshed
+ if (_action.id=='read') this.mail_refreshFolderStatus(_folder,'thisfolderonly',false,true);
return;
}
}
@@ -1279,7 +1278,10 @@ app.classes.mail = AppJS.extend(
{
this.mail_flagMessages(_action.id,msg,(do_nmactions?false:true));
}
- this.mail_refreshFolderStatus();
+ // only refresh counter. not grid as the ajaxmethod is called asyncronously
+ // on flagging, only seen/unseen has effect on counterdisplay
+ if (_action.id=='read') this.mail_refreshFolderStatus(_folder,'thisfolderonly',false,true);
+ //this.mail_refreshFolderStatus();
},
/**
@@ -1752,6 +1754,8 @@ app.classes.mail = AppJS.extend(
*/
mail_getFormData: function(_actionObjects) {
var messages = {};
+ // if
+ if (typeof _actionObjects['msg'] != 'undefined' && _actionObjects['msg'].length>0) return _actionObjects;
if (_actionObjects.length>0)
{
messages['msg'] = [];