CKEditor и Tickets
        Всем привет, заметил проблему с работой компонента CKEditor с Tickets.
Вообщем, если к примеру создаю тикет. В содержимом отбиваю через Enter слова Тест1 Тест2 Тест3.

После публикации, захожу в редактирование. И вижу что CKEditor не видит сделанные мной абзацы. И если я пересохраню материал, то и на сайте будет точно также отображаться. (изначально все эти отступы есть, после создания тикета).

Причем, если я отключу редактор, то всё нормально.

Подскажите пожалуйста, как можно обойти или исправить данный косяк. Редакторам сайта нужно править материалы… А без редактора вообще нельзя.
В базе данных вот так прописано:

Хотелось бы, чтобы в поле content, было также, как и в introtext. Это бы решило проблему…
    
    
                                                                                
            Вообщем, если к примеру создаю тикет. В содержимом отбиваю через Enter слова Тест1 Тест2 Тест3.

После публикации, захожу в редактирование. И вижу что CKEditor не видит сделанные мной абзацы. И если я пересохраню материал, то и на сайте будет точно также отображаться. (изначально все эти отступы есть, после создания тикета).

Причем, если я отключу редактор, то всё нормально.

Подскажите пожалуйста, как можно обойти или исправить данный косяк. Редакторам сайта нужно править материалы… А без редактора вообще нельзя.
В базе данных вот так прописано:

Хотелось бы, чтобы в поле content, было также, как и в introtext. Это бы решило проблему…
Комментарии: 7
                Решения не нашёл. В итоге отключил редактор markitup в системных настройках тикетов. И прикрутил к фронтеду CKEditor            
                    
                Я, может, спрошу глупость, но зачем нужен CKEditor, если есть MarkitUp?            
                    
                Зачем нужен windows, если есть линукс?
            
                    
                Редакторы сайта не умеют им пользоваться, они привыкли к своему Word. А CKEditor очень похож на него)            
                    
                Спасибо за разъяснения. Просто, насколько знаю, MarkitUp достаточно легко кастомизируется, но варианта под word мне и правда не встречалось.            
                    
                Подскажите, как вы прикрутили CKEditor к фронтенду? с такой же задачей столкнулся.            
                    
                По своему опыту реализации такой задачи, опишу главную особенность его интеграции: единожды инициализировав редактор на форме и, впоследствии, при попытке переместить ее, используя, допустим, кнопку «ответить», редактор будет умирать. Тоже самое с ним случается при добавлении им комментария через ajax. 
Данная проблема актуальна для данного редактора и решается последовательным уничтожением в dom-e и последующей повторной инициализацией.
Соответственно — необходимо вынести процесс создания/удаления редактора, написать свою логику работы при нажатии на кнопку «ответить» (до уничтожения формы сохранять уже введенные данные и вставлять в свежесозданную форму) и отредактировать tickets/js/web/default.js, вклинив в него нужные процессы.
Для наглядности, приведу пример часть своего кода, которым решал данную задачу.
Функция создания/удаления формы:
Первичное создании формы и логика для кнопки «ответить»:
tickets/js/web/default.js
Данное решение было выполнено довольно давно (~начало 2014), поэтому не исключаю, что в редакторе/коде тикетсов что-то поменялось, но не уверен, что это в значительной степени изменит логику работы.
Возможно, забыл добавить какой-то кусок кода — в случае чего пишите.
UPD: плюс, насколько я помню, у тикетсов была проблема с подхватыванием введенных пользователем данных в форму ckeditor, но затрудняюсь сказать точнее.
                    Данная проблема актуальна для данного редактора и решается последовательным уничтожением в dom-e и последующей повторной инициализацией.
Соответственно — необходимо вынести процесс создания/удаления редактора, написать свою логику работы при нажатии на кнопку «ответить» (до уничтожения формы сохранять уже введенные данные и вставлять в свежесозданную форму) и отредактировать tickets/js/web/default.js, вклинив в него нужные процессы.
Для наглядности, приведу пример часть своего кода, которым решал данную задачу.
Функция создания/удаления формы:
var editor, editorText;
	
function createCommentEditor() {
	if (!editor) {
		editor = CKEDITOR.replace('comment-editor', {
			customConfig: 'comments.config.js'
		});
		CKEDITOR.instances['comment-editor'].setData(editorText);
	}
}
function removeCommentEditor() {
	if (editor) {
		editorText = editor.getData();
		editor.destroy();
		editor = null;
	}
}Первичное создании формы и логика для кнопки «ответить»:
//первичное подключение редактора
	createCommentEditor();
	//при нажатии на кнопку "ответить"
	$('.comment-reply > a.reply').click(function(){
		//replyMe - класс, навешивающийся на кнопку "ответить" при первом нажатии
		
		//если пользователь нажал на уже активную кнопку "ответить" - возвращаем редактор на место
		if($(this).hasClass('replyMe')) {
			removeCommentEditor();
			//#formWillReturn - контейнер, где по умолчанию находится форма (в дефолтном состоянии)
			//#comment-form - айди формы редактора
			$("#comment-form").appendTo("#formWillReturn");
			createCommentEditor();
			//#returnEditor - id кнопки "вернуть редактор на место"
			$("#returnEditor").hide();
		}
		else {
			//здесь переносим редактор под комментарий, на который пользователь хочет ответить
			//кнопка "ответить" находится внутри элемента li с классом ticket-comment и атрибутом data-id=[[+id]]
			var place = $(this).parents('li.ticket-comment').data('id');
			removeCommentEditor();
			
			//у каждого элемента li.ticket-comment есть по умолчанию пустой контейнер для редактора вида <div id="comments-tree-[[+id]]"></div>
			//вставляем в него редактор
			$("#comment-form").appendTo("#comments-tree-"+place);
			
			createCommentEditor();
			
			//показываем кнопку "вернуть редактор на место"
			$("#returnEditor").show();
		}
	});
	
	//при нажатии на кнопку "вернуть редактор"
	$('#returnEditor').click(function(){
		//удаляем все выделенные кнопки "ответить"
		$('.comment-reply a').removeClass('replyMe');
		removeCommentEditor();
		$("#comment-form").appendTo("#formWillReturn");
		createCommentEditor();
		//возвращаем скрытому полю параметр родителя, к которому комментарий будет привязываться в случае успешного добавления
		$('#comment-form input[name="parent"]').val(0);
		
		//прячем кнопку "вернуть редактор"
		$("#returnEditor").hide();
	});tickets/js/web/default.js
var Tickets = {
	...
	,ticket: {
		...
		,save: function(form, button)  {
			$(form).ajaxSubmit({
				...
				,success: function(response) {
					$(button).removeAttr('disabled');
					if (response.success) {
						//Если комментарий успешно добавлен - реинициализируем форму
						removeCommentEditor();
						Tickets.forms.comment(false);
						$('#comment-preview-placeholder').html('').hide();
						//и очищаем ее
						$('#comment-editor',form).val('');
						
						//после инициализации мы возвращаем форму на место, так что прячем кнопку "вернуть редактор", если она была
						$("#returnEditor").hide();
						$('.ticket-comment-body').removeClass('antwortComment');
						// autoPublish = 0
						if (!response.data.length && response.message) {
							Tickets.Message.info(response.message);
						}
						else {
							Tickets.comment.insert(response.data.comment);
							Tickets.utils.goto($(response.data.comment).attr('id'));
						}
						
						editorText = '';
						
						Tickets.comment.getlist();
						prettyPrint();
						createCommentEditor();
						
						...Данное решение было выполнено довольно давно (~начало 2014), поэтому не исключаю, что в редакторе/коде тикетсов что-то поменялось, но не уверен, что это в значительной степени изменит логику работы.
Возможно, забыл добавить какой-то кусок кода — в случае чего пишите.
UPD: плюс, насколько я помню, у тикетсов была проблема с подхватыванием введенных пользователем данных в форму ckeditor, но затрудняюсь сказать точнее.
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.