Новый дижок форматирования

Новая версия TinyMCE 3.3 идет вместе с новым движком для форматирования: жирный, курсив, определения размера шрифта и многих других функций. С использованием новых функций, будет намного проще добавлять и работать с пользовательским форматированием, и снизится колличество ошибок браузеров.

Проблемы execCommand
Большинство распространенных WYSIWYG редакторов используют для форматирования функцию execCommand. Именно так делалось в TinyMCE перед этой версией. Проблема с этим подходом в том, что каждый браузер интерпретирует эту команду по своему, и большинство реализаций глючат. На протяжении долгого времени постоянно исправлялись ошибки, но полностью исправлены совсем немногие.
В то время, когда браузер выполнял команды, движок редактора решал его ошибки. Для этого запускалась специальная очистка. Проблема в том, что некоторые специфические случаи обрабатывались довольно трудно, и для них требовалось много хаков. Поэтому, было принято решения эту часть исправить.

Новые варианты, новые возможности
Формат шрифта теперь можно задавать вручную. Например, можно переопределить жирный и курсив, вместо стандартных strong и em.

tinyMCE.init({
...
// Переопределение внутреннего форматирования
formats : {
	bold : {inline : 'span', 'classes' : 'bold'},
	italic : {inline : 'span', 'classes' : 'italic'}
},

// Используется в выпадающем меню «Формат»
style_formats : [
	{title : 'Bold text', inline : 'b'},
	{title : 'Red text', inline : 'span', styles : {color : '#ff0000'}}
	]
});

Новое API
API довольно проста в использовании. Всё, что необходимо сделать, это добавить свой стиль текста в хэш formats или использовать функцию register. Ниже приведен пример, как зарегистрировать формат и применять его к выделенному тексту.

tinymce.activeEditor.formatter.register('mycustomformat', {
	inline : 'span',
	styles : {color : '#ff0000'}
});

tinymce.activeEditor.formatter.apply('mycustomformat');

Улучшенный HTML на выходе
Новый движок выполняет работу на более высоком уровне, чем прежде. С этого момента, тэги отвечающий за форматирование — объединяются. Когда вы применяете размер шрифта и цвет к выбранному слову, то это порождало сразу два тэга:

<span style="font-size: medium;"><span style="color: #ff0000;">word</span>

Новый движок понимает это, и объединяет тэги в один:

<span style="font-size: medium; color: #ff0000;">word</span>

Аналогично с классами:

<span class="bold italic">word</span>

TinyMCE переехал на GitHub

Исходный код редактора TinyMCE был официально перенесен на сервис GitHub. Существует ряд причин, по которым мы решили перенести TinyMCE с SourceForge и Subversion на GitHub и Git, и я детально поясню чуть ниже, почему мы приняли такое решение. Много других популярных JavaScript библиотек уже переехали на сервис GitHub, так что мы не единственные в своем решении.

Сообщество
Одним из важных элементов TinyMCE есть круг его активных пользователей. Мы получаем много исправлений и доработок кода от пользователей по определенным проблемам, и нам сложно обрабатывать эти исправления. Они могут приходить в различных форматах и касаться различных потребностей. Распределенная система контроля версий решает многие из этих проблем, так как для пользователей удобнее, когда проблема решается локально, а мы потом можем получить исправления к себе на сервер.

Скорость
Серьезной проблемой, связанной с SourceForge, была его производительность. Иногда он работал на скорости модема, когда мы пытались получить подтверждение от хоста Subversion. Мы могли бы перенести svn на свой собственный сервер, но тогда нам пришлось бы платить за трафик и настраивать онлайн просмотр кода. Также, в связи с тем, что мы решили двигаться вперед, мы могли бы найти альтернативные SCM системы.

Простота доступа
Что нам понравилось в GitHub, так это то, что он главное внимание уделяет исходному коду. Исходники не распиханы по углам – это центральная часть проекта. GitHub имеет очень простой в использовании интерфейс, и мы до сих пор под впечатлением.

Гибкость
Важной особенностью Git является его распределенная система, что дает нам гораздо больше гибкости. Теперь мы можем разместить репозиторий в другом месте, что позволяет нам держать последние версии на разных хостингах. Это значит, что мы не обязаны использовать GitHub, мы также можем хранить данные на своих серверах в качестве альтернативы, а также объединить данные в случае необходимости. Также мы можем настроить свою собственную систему для обработки исправленного кода. Нам не нужно добавлять всех пользователей в центральный репозиторий, если они являются коммитерами.

Недостатки
Но в переходе на Git также есть и недостатки. Например, некоторым разработчикам будет сложно понять концепцию Git. Существует мало клиентов, с которыми Git может графически работать. Также некоторые пользователи имеют внешние ссылки со своих репозиториев на наше.

Image Manager 1.1 beta

Вышла бета версия Image Manager.

  • Добавлена система безопасности
  • Возможность вставки сразу нескольких изображений
  • Выделение всех файлов по Ctrl+A
  • Исправлены ошибки и улучшено быстродействие.

TinyMCE Image Manager 1.0

TinyMCE Image Manager 1.0

Антонов Андрей написал бесплатный плагин управления изображениями для третьей версии Тинимсе. Замечательная замена ibrowser который устанавливается только на вторую версию.

Он умеет управлять папками, картинками и обладает приятным интерфейсом загрузки. В поставке есть русский и английский язык.

Скачать с SourceForge или посмотреть демо.

TinyMCE 3.1 и график размеров файла

В версии 3.1 в основном исправили ошибки связанные с выходом новых браузеров Firefox 3 и Opera 9.5.

Одним из значимых улучшений третий ветки было уменьшения размера редактора. Это действительно так – уменьшился код, сделали спрайты в кнопках и убрали много кода отвечающего за совместимость с динозаврами. Я решил проследить за размерами самого главного файла tiny_mce.js и составил такой график:

По нему, можно сделать вывод, что действительно, по началу файл был меньше, но с выходом новых версий вторая ветка весит все меньше и меньше.

TinyMCE 3.0rc2

Релиз исправляет некоторые баги, и добавляет интересные функции, которые включить разработчики не удержались.

Програмный интерфейс для создания кнопок-меню. Пример.

Новый параметр tab_focus, управляющий выходом из редактируемой области кнопкой Tab:

tinyMCE.init({
	tab_focus : ':prev,:next'
});

Новый параметр indentation, задающий отступ слева кнопкой Увеличить отступ (по умолчанию 30px):

tinyMCE.init({
	indentation : '20pt'
});

Установка ibrowser 1.3

На kurilka.co.ua хорошо описана установка плагина ibrowser, для загрузки и просмотра картинок. Так как он не обновляется с 2006 года, отсутствуют даже намеки на совместимость с третьей версией TinyMCE.

TinyMCE 3.0b3

  • Добавлен метод Editor.getElement, возвращающий элемент, который был заменен редактором;
  • Добавлен новый css префикс для заблокированных кнопок;
  • Опция remove_linebreaks вновь равна true по умолчанию.
  • Исправлено 30 ошибок.

Это были последние изменения перед первым релизом в кандидаты.
Новая версия с частичным переводом уже доступна для просмотра на этом сайте.

TinyMCE 3.0b2 и Spellchecker 2.0b2 PHP

Вышли одновременно две бэта версии, ничего в них нового не появилось – исправлены 25 ошибок, и внесены 3 изменения в структуру движка.

Скачать.

TinyMCE 2.1.3

Добавлена совместимость с Firefox 3 beta и сборками Opera 9.50. Так же исправлен баг со вставкой из буфера в IE. Как заявило Moxiecode, она и дальше будет исправлять критические ошибки, пока не выпустят третью стабильную версию.