forked from extern/egroupware
allow to delete messages immediately (on userinteraction), if OVERQUOTA error is encountered; completely hide preview area stuff on unselect (dock/undock still not working as desired); TODO: hiding the preview area by default
This commit is contained in:
parent
da74bf4210
commit
a7fc441423
@ -2557,12 +2557,13 @@ blockquote[type=cite] {
|
|||||||
* delete messages
|
* delete messages
|
||||||
*
|
*
|
||||||
* @param array _messageList list of UID's
|
* @param array _messageList list of UID's
|
||||||
*
|
* @param string _forceDeleteMethod - method of deletion to be enforced
|
||||||
* @return xajax response
|
* @return xajax response
|
||||||
*/
|
*/
|
||||||
function ajax_deleteMessages($_messageList)
|
function ajax_deleteMessages($_messageList,$_forceDeleteMethod=null)
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".$_flag.':'.print_r($_messageList,true));
|
if(mail_bo::$debug) error_log(__METHOD__."->".print_r($_messageList,true).' Method:'.$_forceDeleteMethod);
|
||||||
|
$error = null;
|
||||||
if ($_messageList=='all' || !empty($_messageList['msg']))
|
if ($_messageList=='all' || !empty($_messageList['msg']))
|
||||||
{
|
{
|
||||||
if ($_messageList=='all')
|
if ($_messageList=='all')
|
||||||
@ -2580,14 +2581,29 @@ blockquote[type=cite] {
|
|||||||
$hA = self::splitRowID($rowID);
|
$hA = self::splitRowID($rowID);
|
||||||
$messageList[] = $hA['msgUID'];
|
$messageList[] = $hA['msgUID'];
|
||||||
}
|
}
|
||||||
$this->mail_bo->deleteMessages(($_messageList=='all' ? 'all':$messageList),$folder);
|
try
|
||||||
|
{
|
||||||
|
$this->mail_bo->deleteMessages(($_messageList=='all' ? 'all':$messageList),$folder,(empty($_forceDeleteMethod)?'no':$_forceDeleteMethod));
|
||||||
|
}
|
||||||
|
catch (egw_exception $e)
|
||||||
|
{
|
||||||
|
$error = str_replace('"',"'",$e->getMessage());
|
||||||
|
}
|
||||||
|
$response = egw_json_response::get();
|
||||||
|
if (empty($error))
|
||||||
|
{
|
||||||
|
$response->call('egw_refresh',lang('deleted %1 messages in %2',count($_messageList['msg']),$folder),'mail');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error = str_replace('\n',"\n",lang('mailserver reported:\n%1 \ndo you want to proceed by deleting the selected messages immediately (click ok)?\nif not, please try to empty your trashfolder before continuing. (click cancel)',$error));
|
||||||
|
$response->call('app.mail.mail_retryForcedDelete',array('response'=>$error,'messageList'=>$_messageList),'mail');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."-> No messages selected.");
|
if(mail_bo::$debug) error_log(__METHOD__."-> No messages selected.");
|
||||||
}
|
}
|
||||||
$response = egw_json_response::get();
|
|
||||||
$response->call('egw_refresh',lang('deleted %1 messages in %2',count($_messageList['msg']),$folder),'mail');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
111
mail/js/app.js
111
mail/js/app.js
@ -137,6 +137,28 @@ app.mail = AppJS.extend(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mail_disablePreviewArea - implementation of the disablePreviewArea action
|
||||||
|
*
|
||||||
|
* @param _value
|
||||||
|
*/
|
||||||
|
mail_disablePreviewArea: function(_value) {
|
||||||
|
var splitter = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailSplitter');
|
||||||
|
//etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreviewHeadersFrom').set_disabled(_value);
|
||||||
|
//etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreviewHeadersTo').set_disabled(_value);
|
||||||
|
//etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreviewHeadersDate').set_disabled(_value);
|
||||||
|
//etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreviewHeadersSubject').set_disabled(_value);
|
||||||
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreview').set_disabled(_value);
|
||||||
|
if (_value==true)
|
||||||
|
{
|
||||||
|
//splitter.dock();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//splitter.undock();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mail_preview - implementation of the preview action
|
* mail_preview - implementation of the preview action
|
||||||
*
|
*
|
||||||
@ -145,21 +167,16 @@ app.mail = AppJS.extend(
|
|||||||
*/
|
*/
|
||||||
mail_preview: function(nextmatch, selected) {
|
mail_preview: function(nextmatch, selected) {
|
||||||
console.log("mail_preview",nextmatch, selected);
|
console.log("mail_preview",nextmatch, selected);
|
||||||
var splitter = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailSplitter');
|
|
||||||
var previewarea = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('mailPreview');
|
|
||||||
// Empty values, just in case selected is empty (user cleared selection)
|
// Empty values, just in case selected is empty (user cleared selection)
|
||||||
var dataElem = {data:{subject:"",fromaddress:"",toaddress:"",date:"",subject:""}};
|
var dataElem = {data:{subject:"",fromaddress:"",toaddress:"",date:"",subject:""}};
|
||||||
if(typeof selected != 'undefined' && selected.length > 0)
|
if(typeof selected != 'undefined' && selected.length > 0)
|
||||||
{
|
{
|
||||||
var _id = this.mail_fetchCurrentlyFocussed(selected);
|
var _id = this.mail_fetchCurrentlyFocussed(selected);
|
||||||
dataElem = egw.dataGetUIDdata(_id);
|
dataElem = egw.dataGetUIDdata(_id);
|
||||||
previewarea.visible = true;
|
|
||||||
}
|
}
|
||||||
if(typeof selected == 'undefined' || selected.length == 0 || selected.length > 1 || typeof dataElem =='undefined')
|
if(typeof selected == 'undefined' || selected.length == 0 || selected.length > 1 || typeof dataElem =='undefined')
|
||||||
{
|
{
|
||||||
this.mail_fetchCurrentlyFocussed();
|
this.mail_fetchCurrentlyFocussed();
|
||||||
//splitter.dock();
|
|
||||||
previewarea.visible = false;
|
|
||||||
var subject ="";
|
var subject ="";
|
||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewFromAddress').set_value("");
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewFromAddress').set_value("");
|
||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewToAddress').set_value("");
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewToAddress').set_value("");
|
||||||
@ -167,12 +184,13 @@ app.mail = AppJS.extend(
|
|||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewSubject').set_value("");
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewSubject').set_value("");
|
||||||
var IframeHandle = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('messageIFRAME');
|
var IframeHandle = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('messageIFRAME');
|
||||||
IframeHandle.set_src(egw.link('/index.php',{menuaction:'mail.mail_ui.loadEmailBody',_messageID:""}));
|
IframeHandle.set_src(egw.link('/index.php',{menuaction:'mail.mail_ui.loadEmailBody',_messageID:""}));
|
||||||
|
this.mail_disablePreviewArea(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//console.log("mail_preview",dataElem);
|
//console.log("mail_preview",dataElem);
|
||||||
//splitter.undock();
|
|
||||||
this.mail_selectedMails.push(_id);
|
this.mail_selectedMails.push(_id);
|
||||||
var subject =dataElem.data.subject;
|
var subject =dataElem.data.subject;
|
||||||
|
this.mail_disablePreviewArea(false);
|
||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewFromAddress').set_value(dataElem.data.fromaddress);
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewFromAddress').set_value(dataElem.data.fromaddress);
|
||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewToAddress').set_value(dataElem.data.toaddress);
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewToAddress').set_value(dataElem.data.toaddress);
|
||||||
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewDate').set_value(dataElem.data.date);
|
etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('previewDate').set_value(dataElem.data.date);
|
||||||
@ -183,6 +201,7 @@ app.mail = AppJS.extend(
|
|||||||
// var request = new egw_json_request('mail.mail_ui.ajax_loadEmailBody',[_id]);
|
// var request = new egw_json_request('mail.mail_ui.ajax_loadEmailBody',[_id]);
|
||||||
// request.sendRequest(false);
|
// request.sendRequest(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
mail_setMailBody: function(content) {
|
mail_setMailBody: function(content) {
|
||||||
console.log('mail_setMailBody',content);
|
console.log('mail_setMailBody',content);
|
||||||
var IframeHandle = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('messageIFRAME');
|
var IframeHandle = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('messageIFRAME');
|
||||||
@ -430,9 +449,45 @@ app.mail = AppJS.extend(
|
|||||||
//alert(_action.id+','+ msg);
|
//alert(_action.id+','+ msg);
|
||||||
app.mail.app_refresh(egw.lang('delete messages'), 'mail');
|
app.mail.app_refresh(egw.lang('delete messages'), 'mail');
|
||||||
this.mail_setRowClass(_elems,'deleted');
|
this.mail_setRowClass(_elems,'deleted');
|
||||||
var request = new egw_json_request('mail.mail_ui.ajax_deleteMessages',[msg]);
|
this.mail_deleteMessages(msg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete mails - actually calls the backend function for deletion
|
||||||
|
* takes in all arguments
|
||||||
|
* @param _msg - message list
|
||||||
|
* @param _action - optional action
|
||||||
|
*/
|
||||||
|
mail_deleteMessages: function(_msg,_action)
|
||||||
|
{
|
||||||
|
app.mail.app_refresh(egw.lang('delete messages'), 'mail');
|
||||||
|
var request = new egw_json_request('mail.mail_ui.ajax_deleteMessages',[_msg,(typeof _action == 'undefined'?'no':_action)]);
|
||||||
request.sendRequest(false);
|
request.sendRequest(false);
|
||||||
for (var i = 0; i < msg['msg'].length; i++) egw.dataDeleteUID(msg['msg'][i]);
|
for (var i = 0; i < _msg['msg'].length; i++) egw.dataDeleteUID(_msg['msg'][i]);
|
||||||
|
this.mail_refreshMessageGrid();
|
||||||
|
this.mail_preview();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* retry to Delete mails
|
||||||
|
* @param responseObject ->
|
||||||
|
* reason - reason to report
|
||||||
|
* messageList
|
||||||
|
*/
|
||||||
|
mail_retryForcedDelete: function(responseObject)
|
||||||
|
{
|
||||||
|
var reason = responseObject['response'];
|
||||||
|
var messageList = responseObject['messageList'];
|
||||||
|
Check = confirm(reason);
|
||||||
|
if (Check==true)
|
||||||
|
{
|
||||||
|
this.mail_deleteMessages(messageList,'remove_immediately');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app.mail.app_refresh(egw.lang('canceled deletion due to userinteraction'), 'mail');
|
||||||
|
this.mail_removeRowClass(messageList,'deleted');
|
||||||
|
}
|
||||||
this.mail_refreshMessageGrid();
|
this.mail_refreshMessageGrid();
|
||||||
this.mail_preview();
|
this.mail_preview();
|
||||||
},
|
},
|
||||||
@ -727,6 +782,46 @@ app.mail = AppJS.extend(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mail_removeRowClass
|
||||||
|
*
|
||||||
|
* @param _actionObjects, the senders, or a messages object
|
||||||
|
* @param _class, the class to be removed
|
||||||
|
*/
|
||||||
|
mail_removeRowClass: function(_actionObjects,_class) {
|
||||||
|
if (typeof _class == 'undefined') return false;
|
||||||
|
|
||||||
|
if (typeof _actionObjects['msg'] == 'undefined')
|
||||||
|
{
|
||||||
|
for (var i = 0; i < _actionObjects.length; i++)
|
||||||
|
{
|
||||||
|
if (_actionObjects[i].id.length>0)
|
||||||
|
{
|
||||||
|
var dataElem = $j(_actionObjects[i].iface.getDOMNode());
|
||||||
|
dataElem.removeClass(_class);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var nm = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('nm');
|
||||||
|
var aO = nm.controller._objectManager.selectedChildren;
|
||||||
|
for (var i = 0; i < _actionObjects['msg'].length; i++)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < aO.length; i++)
|
||||||
|
{
|
||||||
|
if (aO[i].id==_actionObjects['msg'][i])
|
||||||
|
{
|
||||||
|
var dataElem = $j(aO[i].iface.getDOMNode());
|
||||||
|
dataElem.removeClass(_class);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Tree widget stubs
|
// Tree widget stubs
|
||||||
/**
|
/**
|
||||||
* mail_dragStart - displays information while dragging
|
* mail_dragStart - displays information while dragging
|
||||||
|
@ -43,19 +43,19 @@
|
|||||||
<split dock_side="bottomDock" id="mailSplitter" orientation="h">
|
<split dock_side="bottomDock" id="mailSplitter" orientation="h">
|
||||||
<nextmatch id="nm" onselect="app.mail.mail_preview" template="mail.index.rows"/>
|
<nextmatch id="nm" onselect="app.mail.mail_preview" template="mail.index.rows"/>
|
||||||
<vbox id="mailPreview" width="100%">
|
<vbox id="mailPreview" width="100%">
|
||||||
<hbox width="100%" class="mailPreviewHeaders">
|
<hbox width="100%" id="mailPreviewHeadersFrom" class="mailPreviewHeaders">
|
||||||
<description value="From"/>
|
<description value="From"/>
|
||||||
<url-email id="previewFromAddress" readonly="true"/>
|
<url-email id="previewFromAddress" readonly="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
<hbox width="100%" class="mailPreviewHeaders">
|
<hbox width="100%" id="mailPreviewHeadersTo" class="mailPreviewHeaders">
|
||||||
<description value="To"/>
|
<description value="To"/>
|
||||||
<url-email id="previewToAddress" readonly="true"/>
|
<url-email id="previewToAddress" readonly="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
<hbox width="100%" class="mailPreviewHeaders">
|
<hbox width="100%" id="mailPreviewHeadersDate" class="mailPreviewHeaders">
|
||||||
<description value="Date"/>
|
<description value="Date"/>
|
||||||
<date-time align="left" id="previewDate" readonly="true"/>
|
<date-time align="left" id="previewDate" readonly="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
<hbox width="100%" class="mailPreviewHeaders">
|
<hbox width="100%" id="mailPreviewHeadersSubject" class="mailPreviewHeaders">
|
||||||
<description value="Subject"/>
|
<description value="Subject"/>
|
||||||
<description align="left" id="previewSubject" readonly="true"/>
|
<description align="left" id="previewSubject" readonly="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
Loading…
Reference in New Issue
Block a user