Farsh
~ on ~ high ~ wave ~
Подайте идею реализации заметок пользователей в тексте
Представим, что вы конечный пользователь.
Нужно сделать вот такой функционал:
1) вы заходите на страницу с просмотром, например, новости
2) вы можете выбрать какой-то кусок текста и оставить к нему какую-то заметку
3) теперь при просмотре Вами этой новости выбранный кусок текста будет выделен и при наводе к нему будет всплывать заметка
Сейчас это сделано говнокодом, извращаясь яваскриптом / selection; нужно переделать, и переделать грамотно, красиво.
Что у меня на уме:
1) на сервере, перед отдачей новости, каждое слово в тексте обрамляется каким-то тегом, путь будет <z></z> ( на валидность пох ).
У каждого z элемента будет уникальный генерируемый последовательный номер.
То есть:
<z id="1">Я</z> <z id="2">пошел</z> <z id="3">отмечать</z> <z id="4">НГ</z>
2) при клике на кнопку добавления заметки появляется блок, в который можно ввести заметку.
3) этот блок можно драгать, можно бросить к любому слову. ( z - droppable )
4) при дропе мы берем уникальный номер z элемента, в котором был сделан drop, и отправляем его на сервер
5) на сервере повторяем пункт 1, кое-как, не без извращения, определяем на основе этого позицию, куда был сделан дроп.
6) сохраняем эту позицию в бд, а потом при повторном показе этой новости этому пользователю - на место этой позиции вставляем то, что нужно
Главная проблема:
Новость может редактироваться ( скажем админом )... Нужно как-то в tinymce сделать, что если удалят какой-то кусок текста, то заново рассчитать новую позицию заметки. Если текст, в котором была заметка хотят удалить - выдать предупреждение.
Но как-то мне этот подход не особо нравится.
Может у кого-то есть идея, как сделать это круто? Может кто с таким сталкивался ?
Заранее спасибо.
Представим, что вы конечный пользователь.
Нужно сделать вот такой функционал:
1) вы заходите на страницу с просмотром, например, новости
2) вы можете выбрать какой-то кусок текста и оставить к нему какую-то заметку
3) теперь при просмотре Вами этой новости выбранный кусок текста будет выделен и при наводе к нему будет всплывать заметка
Сейчас это сделано говнокодом, извращаясь яваскриптом / selection; нужно переделать, и переделать грамотно, красиво.
Что у меня на уме:
1) на сервере, перед отдачей новости, каждое слово в тексте обрамляется каким-то тегом, путь будет <z></z> ( на валидность пох ).
У каждого z элемента будет уникальный генерируемый последовательный номер.
То есть:
<z id="1">Я</z> <z id="2">пошел</z> <z id="3">отмечать</z> <z id="4">НГ</z>
2) при клике на кнопку добавления заметки появляется блок, в который можно ввести заметку.
3) этот блок можно драгать, можно бросить к любому слову. ( z - droppable )
4) при дропе мы берем уникальный номер z элемента, в котором был сделан drop, и отправляем его на сервер
5) на сервере повторяем пункт 1, кое-как, не без извращения, определяем на основе этого позицию, куда был сделан дроп.
6) сохраняем эту позицию в бд, а потом при повторном показе этой новости этому пользователю - на место этой позиции вставляем то, что нужно
Главная проблема:
Новость может редактироваться ( скажем админом )... Нужно как-то в tinymce сделать, что если удалят какой-то кусок текста, то заново рассчитать новую позицию заметки. Если текст, в котором была заметка хотят удалить - выдать предупреждение.
Но как-то мне этот подход не особо нравится.
Может у кого-то есть идея, как сделать это круто? Может кто с таким сталкивался ?
Заранее спасибо.
))))))) 
