KingOfNothing
@KingOfNothing

Web[js, php] — cоздание, хранение аннотаций и комментариев к документам, а так же миграция аннотаций между версиями документа. Как лучше?

Необходимо сделать таку фичу, как в гугл доксах, что можно выделить текст и написать комментарий к выделенному тексту.
Документы загружается пользователями и представляют собой html код, который рисуется как есть. Если загружается новая версия документа, то нужно определить те места с комментами, где текст не изменился, и перенести комменты. А там, где текст изменился, комменты переносить не нужно.

Какие варианты были:
1) модифицировать dom дерево на клиенте, обрамляя выделенный текст в span с уникальным айди, и отсылкой всего документа на сервер вместе с анотацией. Минусы: большой трафик
2) передавать выделенный текст, оффсет от начала документа и коммент на сервер. Спаны вставлять на сервере и на клиенте. Минусы: дублирование кода на сервере и клиенте, не уверенность, что все браузеры и парсеры будут позволять по оффсету находить правильный текст.

Хотелось бы услышать идеи, о том, как можно лучше хранить на сервере данные о анотациях, чтобы лего находить их в тексте, как сравнивать куски текста, чтобы точно определить, что изменившийся текст имеет коммент со старой версии!
  • Вопрос задан
  • 2553 просмотра
Пригласить эксперта
Ответы на вопрос 1
rumkin
@rumkin
Посмотрите в сторону DOMDocument. Он позволит использовать максимально близкие интерфейсы по работе с dom на сервере и на клиенте.
На клиенте, выделяем текст, находим ближайшего потомка, высчитываем для него xpath и офсет, передаем на сервер xpath, офсет и комментарий.

Надеюсь помог.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы