feat(preferences): Add user preferences to enable / disable signature for new mail, reply and forward

This commit is contained in:
smizrahi committed 2023-07-26 19:38:57 +02:00
1 parent 577d991d42
commit 8582e423bd
14 files changed
+158 -46

No files matched your search

+2 -2
View File
@@ -155,9 +155,9 @@
{
[headers setObject: [self _emailFromIdentity: identity] forKey: @"from"];
signature = [identity objectForKey: @"signature"];
if ([signature length])
ud = [[context activeUser] userDefaults];
if ([signature length] && [ud mailUseSignatureOnNew])
{
ud = [[context activeUser] userDefaults];
[newDraftMessage setIsHTML: [[ud mailComposeMessageType] isEqualToString: @"html"]];
isHTML = [newDraftMessage isHTML];
nl = (isHTML? @"<br />" : @"\n");
+1 -1
View File
@@ -753,7 +753,7 @@
// Add signature
signature = [identity objectForKey: @"signature"];
if ([signature length])
if ([signature length] && [ud mailUseSignatureOnForward])
{
nl = (htmlComposition? @"<br />" : @"\n");
space = (htmlComposition ? @"&nbsp;" : @" ");
@@ -195,6 +195,9 @@
"Compose messages in" = "Compose messages in";
"composemessagestype_html" = "HTML";
"composemessagestype_text" = "Plain text";
"Insert signature on new message" = "Insert signature on new message";
"Insert signature on reply" = "Insert signature on reply";
"Insert signature on forward" = "Insert signature on forward";
/* Base font size for messages composed in HTML */
"Default font size" = "Default font size";
@@ -195,6 +195,9 @@
"Compose messages in" = "Composer les messages en";
"composemessagestype_html" = "HTML";
"composemessagestype_text" = "Texte";
"Insert signature on new message" = "Insérer la signature sur un nouveau message";
"Insert signature on reply" = "Insérer la signature sur une réponse";
"Insert signature on forward" = "Insérer la signature sur un transfert";
/* Base font size for messages composed in HTML */
"Default font size" = "Taille de la police par défaut";
+12 -2
View File
@@ -343,8 +343,18 @@ static SoProduct *preferencesProduct = nil;
if (![[defaults source] objectForKey: @"SOGoMailReplyPlacement"])
[[defaults source] setObject: [defaults mailReplyPlacement] forKey: @"SOGoMailReplyPlacement"];
if (![[defaults source] objectForKey: @"SOGoMailSignaturePlacement"])
[[defaults source] setObject: [defaults mailSignaturePlacement] forKey: @"SOGoMailSignaturePlacement"];
if (![[defaults source] objectForKey: @"SOGoMailUseSignatureOnNew"])
[[defaults source] setObject: [NSNumber numberWithBool: [defaults mailUseSignatureOnNew]] forKey: @"SOGoMailUseSignatureOnNew"];
if (![[defaults source] objectForKey: @"SOGoMailUseSignatureOnReply"])
[[defaults source] setObject: [NSNumber numberWithBool: [defaults mailUseSignatureOnReply]] forKey: @"SOGoMailUseSignatureOnReply"];
if (![[defaults source] objectForKey: @"SOGoMailUseSignatureOnForward"])
[[defaults source] setObject: [NSNumber numberWithBool: [defaults mailUseSignatureOnForward]] forKey: @"SOGoMailUseSignatureOnForward"];
if (![[defaults source] objectForKey: @"SOGoMailAddOutgoingAddresses"])
[[defaults source] setObject: [NSNumber numberWithBool: [defaults mailAddOutgoingAddresses]] forKey: @"SOGoMailAddOutgoingAddresses"];
if (![[defaults source] objectForKey: @"SOGoMailComposeMessageType"])
[[defaults source] setObject: [defaults mailComposeMessageType] forKey: @"SOGoMailComposeMessageType"];
@@ -803,6 +803,30 @@
</md-input-container>
</div>
<div layout="row" layout-xs="column">
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailUseSignatureOnNew"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Insert signature on new message">
<var:string label:value="Insert signature on new message"/>
</md-checkbox>
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailUseSignatureOnReply"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Insert signature on reply">
<var:string label:value="Insert signature on reply"/>
</md-checkbox>
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailUseSignatureOnForward"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Insert signature on forward">
<var:string label:value="Insert signature on forward"/>
</md-checkbox>
</div>
<div layout="row">
<md-input-container class="md-block" flex="50">
<label><var:string label:value="Compose messages in"/></label>
@@ -402,38 +402,44 @@
nlNb = 2;
else
nlNb = 1;
if ((vm.isNew() && Preferences.defaults.SOGoMailUseSignatureOnNew === 1)
|| (!vm.isNew() && Preferences.defaults.SOGoMailUseSignatureOnForward === 1 && vm.message && vm.message.origin && vm.message.origin.action && vm.message.origin.action === 'forward')
|| (!vm.isNew() && Preferences.defaults.SOGoMailUseSignatureOnReply === 1 && vm.message && vm.message.origin && vm.message.origin.action && vm.message.origin.action === 'reply')
) {
if (identity && identity.signature)
signature = nl.repeat(nlNb) + '--' + space + nl + identity.signature;
else
signature = '';
if (identity && identity.signature)
signature = nl.repeat(nlNb) + '--' + space + nl + identity.signature;
else
signature = '';
previousIdentity = _.find(this.identities, function (currentIdentity, index) {
previousIdentity = _.find(this.identities, function (currentIdentity, index) {
if (currentIdentity.signature) {
var currentSignature = new RegExp('(' + reNl + '){' + nlNb + '}--' + space + reNl +
currentIdentity.signature.replace(/[-\[\]{}()*+?.,\\^$|#\s]/g, '\\$&'));
if (vm.message.editable.text.search(currentSignature) >= 0) {
vm.message.editable.text = vm.message.editable.text.replace(currentSignature, signature);
return true;
if (currentIdentity.signature) {
var currentSignature = new RegExp('(' + reNl + '){' + nlNb + '}--' + space + reNl +
currentIdentity.signature.replace(/[-\[\]{}()*+?.,\\^$|#\s]/g, '\\$&'));
if (vm.message.editable.text.search(currentSignature) >= 0) {
vm.message.editable.text = vm.message.editable.text.replace(currentSignature, signature);
return true;
}
}
}
return false;
});
if (!previousIdentity && signature.length > 0) {
// Must place signature at proper place
if (!this.isNew() && this.replyPlacement == 'above' && this.signaturePlacement == 'above') {
var quotedMessageIndex = this.message.editable.text.search(new RegExp(reNl + '.+?:( ?' + reNl + '){' + nlNb + '}(> |<blockquote type="cite")'));
if (quotedMessageIndex >= 0) {
this.message.editable.text =
this.message.editable.text.slice(0, quotedMessageIndex) +
signature +
this.message.editable.text.slice(quotedMessageIndex);
return false;
});
if (!previousIdentity && signature.length > 0) {
// Must place signature at proper place
if (!this.isNew() && this.replyPlacement == 'above' && this.signaturePlacement == 'above') {
var quotedMessageIndex = this.message.editable.text.search(new RegExp(reNl + '.+?:( ?' + reNl + '){' + nlNb + '}(> |<blockquote type="cite")'));
if (quotedMessageIndex >= 0) {
this.message.editable.text =
this.message.editable.text.slice(0, quotedMessageIndex) +
signature +
this.message.editable.text.slice(quotedMessageIndex);
} else {
this.message.editable.text = signature + this.message.editable.text;
}
} else {
this.message.editable.text = signature + this.message.editable.text;
this.message.editable.text += signature;
}
} else {
this.message.editable.text += signature;
}
}
};