Обновляем и фиксим TinyMce до 3.4.x

Зачем обновлять TimyMCE до версии 3.4.2)?

В старом редакторе нельзя сделать цитирования, глючит на некоторых браузерах и много исправлено с времен 3.2.7, например вставка iframe, более коректное форматирования текста исправлены проблемы со флешом и многое другое, ченджлог здесь
При обновлении не работает вставка видео через плагин для TinyMce lseditor, цитирование не выделяется цветом…
Как сделать отправку по Ctrl+enter в TinyMce в коментариях?
Как пофиксить — под кат…

Установка
Итакс, начнемс… начнемс с установки TinyMce 3.4.2. Скачать последнюю версию TinyMCE можно отсюда. Роспаковуем, копируем содержимое папки /tinymce/scripts (там папка tinymce) в \engine\lib\external. Копируем плагин lseditor с \engine\lib\external\tinymce_3_2_7\plugins в нашую новую папку \engine\lib\external\tinymce\plugins Я считаю, что приавильно, чтоб либа не имела версии в названии каталога, в котором лежит, так как не надо потом заменять путь к новой либе в шаблонах, но все же сейчас ето прийдется сделать. Если вы случайно не захотите етого делать, тогда пожалуйста, бросайте новый тайни в старую папку, названия которой не соотвествует реальности.
Например вот моя конфигурация для топика в \templates\skin\new\actions\ActionTopic\add.tpl
tinyMCE.init({
        // General options
        mode : "textareas",
        theme : "advanced",
         plugins : "lseditor,safari,inlinepopups,media,pagebreak,emotions,fullscreen,advhr",
		
	
		
        // Theme options
        theme_advanced_buttons1 : "lshselect,bold,italic,underline,strikethrough,|,bullist,numlist,|,undo,redo,|,blockquote,hr,lslink,unlink,media,lsimage,emotions,pagebreak,code,fullscreen",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_buttons4 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,
		theme_advanced_resize_horizontal : 0,
		theme_advanced_resizing_use_cookie : 0,
		theme_advanced_path : false,
		force_br_newlines : true,
		convert_urls : false,
		pagebreak_separator :"<cut>",
		 extended_valid_elements : 'embed[src|type|wmode|allowscriptaccess|allowfullscreen|width|height],iframe[name|src|framespacing|border|frameborder|scrolling|title|height|width],object[declare|classid|codebase|data|type|codetype|archive|standby|height|width|usemap|name|tabindex|align|border|hspace|vspace]',
        media_strict : false,
		// Skin options
        skin : "o2k7",
        skin_variant : "silver",

        // Example content CSS (should be your site CSS)
        content_css : "css/example.css",
		language : TINYMCE_LANG

        
});

И для коментария в plugins\cmtedit\templates\skin\default\cmtedit_form.tpl, потому что стоит плагин от Ajaxy, думаю он у всех стоит уже)
Как видите, у меня нету кнопки lsvideo, так как она у меня не заработала, тоесть при вставке кода видео картинка флеша в плеере не появилась. Вместо неё я использовал существующий в комплекте плагин media в папке с плагинами Тайни. Первие 2 вкладки считаю ненужными, поетому давайте их уберем:
Находим в engine\lib\external\tiny_mce\plugins\media\media.htm
<form onsubmit="Media.insert();return false;" action="#">
		<div class="tabs" role="presentation">
			<ul>

и коментим етот код
<li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
				<li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>

При етом плагин все равно не коректно работает с вставкой видео… ну не вставляет и все…
Лезим в папку с tinymce/plugins/media/js/media.js ищем строчку 73
this.preview();

после нее вставляем:
mcTabs.displayTab('source_tab','source_panel');
			this.formToData('source');

И все… видео должно работать…
Цитирование
Цитирование по дефолту не виделяется цветом… ето поправимо: вставляєм в файл вашего скина TinyMce content.css (например в \engine\lib\external\tiny_mce\themes\advanced\skins\o2k7\content.css)
blockquote { font-style: italic; padding: 5px 10px; background-color: #f1f1f1; }

Ctrl+enter для отправки коментария
1) добавляем в cmtedit.js плагина cmtedit
function ctrlEnter(e) { 
  key = e.keyCode || e.which;
        if(e.ctrlKey && (key == 13))
        document.getElementById('comment_reply').click() 
           }

2) Добавляем в cmtedit_form.tpl после tinyMCE.init({
setup : function(ed) {
			ed.onKeyPress.add(function(ed, e) {
				ctrlEnter(e);
			});
		}


Вродь как все, что хотел росказать

TODO:(нид ваш хелп) Сделать вставку цитаты как в дефолтном редакторе — если выделить текст снаружи и нажать цытирование — то чтоб вставился текст в TinyMce.
На всякий случай: пункт приема пива авторм находится здесь

3 комментария

avatar
А вообще в ревизии 1160 у тебя работает вставка картинок в tiny?
Пробовал и на стандартном tiny и обновить его до 3.4.2 одна фигня ((

У меня при вставке картинки, картинка после загрузки на сервак в форму tiny не вставляется

после того как нажал загрузить
идет POST,
site.ru/ajax/upload/image/?PHPSESSID=qqqqqqqq&JsHttpRequest=11111-form

в ответе
{«sText»:"<img src=\«http:\/\/site.ru\/uploads\/images\/00\/00\/01\/2011\/05\/19\/73d7e0.jpg\» alt=\"\" \/>",«sMsgTitle»:"",«sMsg»:"",«bStateError»:false}

по этому пути, который в ответе, картинка есть, то есть она загрузилась,

но в форму tiny не вставляется ((

Может быть кто нибудь подскажет что тут можно сделать?
avatar
После обновления TinyMce начал частенько пропадать курсор. При обновлении страниц курсор появляется. Решил проверить с помощью FireBug. Выдал вот такую ошибку:
uncaught exception: [Exception… «Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIDOMNSHTMLDocument.designMode]» nsresult: «0xc1f30001 (NS_ERROR_NOT_INITIALIZED)» location: «JS frame :: сайт/engine/lib/external/tinymce_3.2.7/tiny_mce.js :: anonymous :: line 1» data: no]

Погуглил, понял, что это ошибка появляется только на Мозиллах. Подскажите пожалуйста, может еще кто то с этим сталкивался и решил проблему как-нибудь?
avatar
а у меня по чему то не меняется форма добавления комментария. форма редактирования поменялась, добавить топик поменялась, а форма комментария нет. где мне найти форму комментария что бы в Tinymce кнопочек добавить? Спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.