У меня есть <div contenteditable="true" />
, который пользователь может написать, который в значительной степени неограничен по длине.
Данные в div сохраняются при изменении с меткой времени в базе данных MySQL.Сохранение изменений в contenteditable с отметкой времени
Теперь моя цель - иметь небольшое примечание слева, которое сообщает пользователю, когда каждая часть документа была создана (разрешение должно быть в днях).
Теперь, вопрос: Как я могу сохранить информацию (какая часть была изменена когда) лучше всего?
Я рассмотрел следующие варианты до сих пор, которые оба кажутся улучшаемый:
- Каждый раз, когда пользователь посещает сайт в конце документа вставить флаг (например, пуста промежуток с классом и атрибут данных, который сохраняет начало редактирования). Этот флаг затем сохраняется в базе данных при вызове сценария сохранения. Этот параметр упростит отображение даты на стороне - я бы просто поставил их на ту же высоту, что и пустой пробел, и диапазон сообщает мне дату. Недостатки: пользователь может случайно удалить временной интервал времени, и если пользователь не закрывает окно в течение длительного времени, никакие новые временные интервалы не вставлены (этого, вероятно, можно избежать, вставив новую временную шкалу каждые X минут, чтобы удаляющая часть была более релевантно)
- Попытка выполнить сопоставление строк diff каждый раз, когда данные передаются в сценарий сохранения и сохраняются только с временной меткой. Затем, когда страница загружается, все части вместе в правильном порядке и в Javascript помещают заметки даты в нужное место. Это звучит как много накладных расходов для меня, хотя +, когда старые части изменены, две части могут стать одной и т. Д. Все эти варианты звучат очень сложно.
Любые материалы/идеи/предложения высоко оценены!
Является ли тип контента структурированным или неструктурированным? Если он неструктурирован (например, кодовая база во времени), я бы предложил использовать решение, предоставленное armel. Если он структурирован или может быть структурирован, тогда решение (ы) предоставлено мной и мной. –
Является ли тип контента структурированным или неструктурированным? Если он неструктурирован (например, кодовая база во времени), то я бы предложил использовать слияние решения, предоставляемого armel. Если он структурирован или может быть структурирован, тогда решение (ы) предоставлено мной и мной. Неструктурированный документ более сложный для обработки, потому что довольно часто трудно урегулировать правильную иерархию изменений. (Это всегда была очень проблематичная проблема с репликацией на разных серверах в Lotus Notes.) Это версия комментария, которую я хотел бы вам принять во внимание. –
@LoekBergman: вход генерируется пользователем и не следует какой-либо конкретной структуре. – Horen