feat(core): Update to ckeditor 5. Fixes #5920. Add SOGoForceRawHtmlSignature to disable raw-html-embed. Removed CKEditor signature box style when composing mail. Fix issue where raw-html-embed was added when changind signature

This commit is contained in:
smizrahi
2024-04-08 10:37:33 +02:00
parent a9e02d94a2
commit 98e00d09a3
7 changed files with 48 additions and 7 deletions

View File

@@ -839,6 +839,9 @@ specified as an array of dictionaries.
|S |SOGoURLEncryptionPassphrase
|Passphrase for `SOGoURLEncryptionEnabled`. The string must be 128 bits (16 characters). If this settings change, the cache server must be restarted, and the DAV url will change. Default value is `SOGoSuperSecret0`.
|D |SOGoForceRawHtmlSignature
|Add `<div class="raw-html-embed sogo-raw-html-embed">` around signature to avoid CKEditor 5 modifying HTML code and breaking signature (https://bugs.sogo.nu/view.php?id=5920). Default value is `YES` (tag is added).
|=======================================================================
@@ -3971,8 +3974,8 @@ current version of SOGo from the previous release.
[cols="100a"]
|=======================================================================
h|5.10.1
|Parameters `SOGoGlobalAddressBookFirstEntries` and `SOGoGlobalAddressBookFirstEntriesCount` has been removed. Please use `listRequiresDot` and `globalAddressBookFirstEntriesCount` instead
h|5.11
|Parameters `SOGoGlobalAddressBookFirstEntries` and `SOGoGlobalAddressBookFirstEntriesCount` has been removed. Please use `listRequiresDot` and `globalAddressBookFirstEntriesCount` instead. Signature are now between a div tag to avoid CKEditor changing the content - set `SOGoForceRawHtmlSignature` to `NO` to leave signature (https://bugs.sogo.nu/view.php?id=5920).
h|5.9.0
|Run the shell script `sql-update-5.8.4_to_5.9.0.sh` (if you are using MySQL). This will change the `c_defaults` to `MEDIUMTEXT`.

View File

@@ -102,6 +102,8 @@
- (NSString *) passwordRecoveryFrom;
- (BOOL) forceRawHtmlSignature;
@end
#endif /* SOGODOMAINDEFAULTS_H */

View File

@@ -465,4 +465,9 @@
return emailFrom;
}
- (BOOL) forceRawHtmlSignature
{
return [self objectForKey: @"SOGoForceRawHtmlSignature"] ? [self boolForKey: @"SOGoForceRawHtmlSignature"] : YES;
}
@end

View File

@@ -113,6 +113,7 @@
- (unsigned int) weekNumberForDate: (NSCalendarDate *) date;
- (NSArray *) mailAccounts;
- (NSArray *) mailAccountsNoRawHtmlSignature;
- (NSArray *) mailAccountsWithDelegatedIdentities: (BOOL) appendDeletegatedIdentities;
- (NSDictionary *) accountWithName: (NSString *) accountName;
- (NSArray *) allIdentities;

View File

@@ -1026,10 +1026,15 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
- (NSArray *) mailAccounts
{
return [self mailAccountsWithDelegatedIdentities: YES];
return [self mailAccountsWithDelegatedIdentities: YES forceRawHtmlSignature: [[self domainDefaults] forceRawHtmlSignature]];
}
- (NSArray *) mailAccountsWithDelegatedIdentities: (BOOL) appendDeletegatedIdentities
- (NSArray *) mailAccountsNoRawHtmlSignature
{
return [self mailAccountsWithDelegatedIdentities: YES forceRawHtmlSignature: NO];
}
- (NSArray *) mailAccountsWithDelegatedIdentities: (BOOL) appendDeletegatedIdentities forceRawHtmlSignature: (BOOL) forceRawHtmlSignature
{
NSArray *auxAccounts;
@@ -1112,8 +1117,9 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
if ([tmpIdentity objectForKey: @"signature"] ) {
// Add raw html embed class
if ([[tmpIdentity objectForKey: @"signature"] rangeOfString:@"raw-html-embed"].location == NSNotFound
&& [[[self userDefaults] mailComposeMessageType] isEqualToString: @"html"]) {
signature = [NSString stringWithFormat:@"<div class=\"raw-html-embed\">%@</div>", [tmpIdentity objectForKey: @"signature"]];
&& [[[self userDefaults] mailComposeMessageType] isEqualToString: @"html"]
&& forceRawHtmlSignature) {
signature = [NSString stringWithFormat:@"<div class=\"raw-html-embed sogo-raw-html-embed\">%@</div>", [tmpIdentity objectForKey: @"signature"]];
[tmpIdentity setObject:signature forKey:@"signature"];
}
}

View File

@@ -516,7 +516,7 @@ static SoProduct *preferencesProduct = nil;
}
}
// We inject our default mail account
account = [[[context activeUser] mailAccounts] objectAtIndex: 0];
account = [[[context activeUser] mailAccountsNoRawHtmlSignature] objectAtIndex: 0];
if (![account objectForKey: @"receipts"])
{
[account setObject: [NSDictionary dictionaryWithObjectsAndKeys: @"ignore", @"receiptAction",

View File

@@ -428,4 +428,28 @@ md-dialog md-dialog-actions.sg-mail-editor-attachments {
margin-left: unset!important;
margin-right: unset!important;
}
.ck-widget.sogo-raw-html-embed:before {
display: none!important;
}
.sogo-raw-html-embed .raw-html-embed__buttons-wrapper {
display: none !important;
}
.ck-widget.sogo-raw-html-embed:not(.ck-widget_selected):not(:hover) {
outline: none!important;
}
.ck-widget.sogo-raw-html-embed {
background-color: unset;
}
.ck-widget.sogo-raw-html-embed .raw-html-embed__preview-content {
background-color: unset;
}
.sogo-raw-html-embed .raw-html-embed__preview-placeholder {
display: none !important;
}
}