Forums / National / Russian / Тех. поддержка / [Fixed] Не отображается CKeditor, если у textarea более 1 класса

Edward
#41105 2015-10-26 03:49

Столкнулся с проблемой описанной в заголовке. У меня в шаблоне page.edit.tpl используется тема на bootstrap и имеется несколько textarea такого вида


<textarea class="editor form-control" rows="3"></textarea>

Решил проблему поправив файлик plugins/ckeditor/presets/ckeditor.default.set.js

/*
 * Default CKEditor preset and connector
 */

var ckeditorClasses = [
				  ['editor','Full'], // textarea class, editor toolbar size
				  ['medieditor','Medium'],
				  ['minieditor','Basic']
				 ];

function hasClass(el, selector) {
	var className = " " + selector + " ";
  , 
	if ((" " + el.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1) {
    	return true;
	}
return false;
}

function ckeditorReplace() {
	var textareas = document.getElementsByTagName('textarea');
	for (var i = 0; i < textareas.length; i++) {
		
		if (hasClass(textareas[i], ckeditorClasses[0][0]) || hasClass(textareas[i], ckeditorClasses[1][0]) || hasClass(textareas[i], ckeditorClasses[2][0])) {
			var textareasStyle = getComputedStyle(textareas[i], null) || textareas[i].currentStyle;
			if (hasClass(textareas[i], ckeditorClasses[0][0])) { var toolbars = ckeditorClasses[0][1] }
			if (hasClass(textareas[i], ckeditorClasses[1][0])) { var toolbars = ckeditorClasses[1][1] }
			if (hasClass(textareas[i], ckeditorClasses[2][0])) { var toolbars = ckeditorClasses[2][1] }
			CKEDITOR.replace(textareas[i], {height:textareasStyle.height, width:'100%', toolbar: toolbars});
		}
	}
}

if (typeof jQuery == 'undefined') {
	if (window.addEventListener) {
		window.addEventListener('load', ckeditorReplace, false);
	} else if (window.attachEvent) {
		window.attachEvent('onload', ckeditorReplace);
	} else {
		window.onload = ckeditorReplace;
	}
} else {
	$(document).ready(ckeditorReplace);
	ajaxSuccessHandlers.push(ckeditorReplace);
}

Кривоватое решение, но что-то подобное должно быть сразу из коробки, потому как классов у элемента может быть более одного.

Email: ed.gabishev@gmail.com
Telegram: https://t.me/Ed_Gaba
This post was edited by Macik (2015-10-31 16:40, 8 years ago)