refactor(mail(js)): replace ckEditor directive by sgCkeditor component

This refactoring

 1. simplifies updating the CKEditor source code;
 2. allows many instances of the CKEditor on the same page;
 3. fixes the cursor positioning on focus.
This commit is contained in:
Francis Lachapelle committed 2020-05-15 11:37:56 -04:00
1 parent 9f861bd629
commit 07c06db69d
17 files changed
+461 -165

No files matched your search

@@ -4,7 +4,7 @@
(function() {
'use strict';
angular.module('SOGo.MailerUI', ['ngCookies', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.SchedulerUI', 'ngAnimate', 'SOGo.PreferencesUI'])
angular.module('SOGo.MailerUI', ['ngCookies', 'ui.router', 'sgCkeditor', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.SchedulerUI', 'ngAnimate', 'SOGo.PreferencesUI'])
.config(configure)
.run(runBlock);
@@ -4,7 +4,7 @@
(function() {
'use strict';
angular.module('SOGo.MailerUI', ['ngCookies', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.SchedulerUI', 'ngAnimate', 'SOGo.PreferencesUI'])
angular.module('SOGo.MailerUI', ['ngCookies', 'ui.router', 'sgCkeditor', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.SchedulerUI', 'ngAnimate', 'SOGo.PreferencesUI'])
.config(configure)
.run(runBlock)
.controller('MessageEditorControllerPopup', MessageEditorControllerPopup);
@@ -40,8 +40,12 @@
if (Preferences.defaults.SOGoMailAutoSave)
// Enable auto-save of draft
this.autosave = $timeout(this.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);
// Set the locale of CKEditor
this.localeCode = Preferences.defaults.LocaleCode;
this.ckConfig = { language: Preferences.defaults.LocaleCode };
this.composeType = Preferences.defaults.SOGoMailComposeMessageType;
this.replyPlacement = Preferences.defaults.SOGoMailReplyPlacement;
if (this.message.origin && this.message.origin.action == 'forward') {
@@ -415,14 +419,21 @@
}
};
this.onHTMLFocus = function ($event) {
var caretAtTop = (this.replyPlacement == 'above');
this.onHTMLReady = function ($editor) {
if (!this.isNew()) {
onCompletePromise().then(function() {
$editor.focus();
});
}
};
this.onHTMLFocus = function (editor) {
if (this.firstFocus) {
onCompletePromise().then(function(element) {
var selected = $event.editor.getSelection(),
var caretAtTop = (vm.replyPlacement == 'above'),
selected = editor.getSelection(),
selected_ranges = selected.getRanges(),
children = $event.editor.document.getBody().getChildren(),
children = editor.document.getBody().getChildren(),
node;
if (caretAtTop) {