Есть такой замечательный редактор TinyMCE. Написан на явяскрипте, но сделано здорово.

Возникла задача: вставлять картинку, которую отправил пользователь не в тексте, где стоит курсор, а в конце абзаца

TinyMCE формирует уже готовый хтмл код у себя в форме, поэтому конец абзаца он обозначет как </p>. При этом если выделить кусочек и вставить картинку, он воткнет ее в конец этого кусочка.

Для вставки картиник пользовали плагин advancedimage, его код и насилуем.

Функция insertAndClose:

el = ed.selection.getNode();

if (el && el.nodeName == ‘IMG’) {… } else {…}

Вот эта штука проверяет выделена ли картинка (вдруг мы редактируем вставленное ранее) или втыкается новая.

В else вставляем:

ed.selection.select(el);
try {
ed.selection.collapse(false);
} catch (ex) {
// Ignore
}

Первая строка выделяет весь абзац (вместе с тегом p, так как getNode нам возвращает именно его). Collapse “ставит курсор” в конец, за тег p (если без него, то весь абзац будет заменяться на картинку)

Собсно вот. Много секса и вот такая интересная инфа добыта