В нашей CMS у нас есть место, где мы позволяем пользователям играть с иерархией своего сайта — перемещать страницы, добавлять и удалять страницы и т. д.
Мы используем перетаскивание для реализации перемещения страниц.
Каждое движение должно быть сохранено в БД и экспортировано во множество файлов HTML. Если мы будем делать это при каждом движении, это замедлит работу пользователей. Поэтому мы подумали, что предпочтительнее дать пользователям поиграться сколько угодно, сохраняя каждое изменение в БД, но только когда они покидают страницу - чтобы экспортировать свои изменения в файлы HTML.
Мы подумали о том, чтобы заставить пользователя нажать кнопку «Опубликовать», когда он будет готов зафиксировать свои изменения, но мы опасаемся, что пользователи не забудут сделать это, потому что с их точки зрения, как только они переместили страницу в новое место - действие выполнено. Другая проблема с кнопкой заключается в том, что она несовместима с поведением других частей сайта (например, когда пользователь перемещает текст внутри страницы, изменения сохраняются автоматически, так как нужно обновить только 1 HTML-файл).
Итак, как мы можем автоматически сохранять изменения пользователя при выходе со страницы?