Я пишу плагин для FCKeditor, который предназначен для вставки заполнителей для динамического содержимого в HTML. Интерфейс выглядит так:
В настоящее время плагин вставляет следующий HTML-код:
<div title="Dynamic Element: E-Cards (sidebar)" class="dynamicelement ecards-sidebar"> </div>
Фрагмент Javascript в моем плагине, который выполняет фактическую вставку этих заполнителей, выглядит следующим образом:
function insertNewDiv() {
var divNode = oEditor.FCK.EditorDocument.createElement('div');
oEditor.FCK.InsertElement(divNode);
oEditor.FCK.Focus();
oEditor.FCK.Events.FireEvent('OnSelectionChange');
return divNode;
}
Чтобы он хорошо выглядел в окне FCKeditor, я применяю CSS к окну FCKeditor, включая следующий, который записывает туда заголовок:
.dynamicelement:before {
content: attr(title);
}
В любом случае, кроме стиля, FCKeditor обрабатывает эти div
элементы не иначе, чем любой другой div
элемент в своем окне. Для меня это нехорошо.
Мне нужно, чтобы у этих заполнителей были следующие характеристики:
- Вставка содержимого в заполнитель не допускается.
- Щелчок по нему должен выделить его целиком.
- Нажатие кнопки удаления, когда она выбрана, должно удалить ее.
- Единственный способ отредактировать его (помимо удаления) - выбрать его, а затем щелкнуть кнопку на панели инструментов, чтобы открыть диалоговое окно редактирования.
- Его всегда следует рассматривать как элемент блочного уровня.
- Не имеет значения, использует ли вывод HTML пользовательское имя тега или нет (
<dynamicelement>
вместо<div class="dynamicelement">
).
Предоставляет ли FCKeditor API способ дать ему команду типа «Обрабатывать каждый элемент, соответствующий селектору 'div.dynamicelement', следующим образом: ...»?
Кроме того, есть ли еще один плагин FCKeditor, который делает похожую вещь, на которую я могу ссылаться, что я мог пропустить в своем исследовании?
РЕДАКТИРОВАТЬ: Кстати, я уже знаю о CKeditor. Я использую FCKeditor по нескольким причинам: он работает для моей CMS, параметры конфигурации, которые я использую, идеально подходят для моих клиентов (за исключением, очевидно, элемента заполнителя) и т. Д.