Плагин к WYSIWYG
Нужна помощь в написании небольшого Javascript-плагина к
WYSIWYG-редактору. Прошу прощения за длинное изложение. ПРЕДИСТОРИЯ ЗАДАЧИ: Имеется система, хранящая HTML-документы, доступные для просмотра и редактирования многими пользователями. В любом месте документа, любой пользователь в режиме просмотра может прикрепить личную заметку, видимую в режиме просмотра только ему. Заметки хранятся в отдельной таблице с указанием места прикрепления к документу в виде смещения от начала HTML-текста. Проблема возникает при редактировании в WYSIWYG-редакторе. Нужно стараться сохранить привязку заметок к документу, при этом скрывая их от редактирующего пользователя. ПРЕДЛАГАЕМОЕ РЕШЕНИЕ: Редактирование осуществляется в двух режимах: собственно WYSIWYG (обычно iframe в designMode) и HTML (textarea). С ПЕРВЫМ режимом сложностей вроде не предвидится и делать предлагается так: позиции заметок загружаются в javascript массив или объект. До загрузки в iframe, в точки определенные смещением заметок помещается специальный невидимый тэг (например <hr class="note" id="note_123" /> со стилем hr.note {display:none}). Если при редактировании тэг привязки заметки будет удален, (это приходится допускать) то должно сработать исключение и либо это отмечается в массиве данных, либо мы восстанавливаем тег в нужном месте. При сохранении или переходе в HTML режим, начиная с начала текста, тэги последовательно удаляются с сохранением информации об их смещении от начала. Самый проблемный ВТОРОЙ режим - редактирование HTML в textarea: Тут использовать скрытые теги не получится и поэтому придется отслеживать события в textarea: ввод с клавиатуры, действия мышью, контекстное меню, горячие клавиши и анализировать, какие произошли изменения с положением наших контрольных точек, каждый раз пересчитывая их смещение и обрабатывая их нечаянное удаление. ЭТО САМОЕ СЛОЖНОЕ и основное. В конце, в эти точки вставляем обратно наши hr тэги и переходим обратно в WYSIWYG-режим. Это решение позволит не привязываться к конкретному редактору и должно работать в любом стандартном WYSIWYG-редакторе. Требуется кроссбраузерное решение. Возможно ли это реализовать? Если Вы действительно можете решить эту задачу, готов обсудить бюджет... |
Часовой пояс GMT +3, время: 03:06. |