Обновляем и фиксим 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 плагина cmteditfunction 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 комментария
Пробовал и на стандартном 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 не вставляется ((
Может быть кто нибудь подскажет что тут можно сделать?
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]
Погуглил, понял, что это ошибка появляется только на Мозиллах. Подскажите пожалуйста, может еще кто то с этим сталкивался и решил проблему как-нибудь?