Блокирование параллельного редактирования
Если двое будут редактировать одну страницу, это может привести к неприятному конфликту: изменения одного из них сохранятся без каких-либо проволочек, в то время как второй увидит сообщение о кофликтной ситуации. Наиболее простой метод избежать данной ситуации - это выдавать предупреждающее сообщение при начале редактирование, если кто-то уже исправляет данную страницу.
Это может быть реализовано в MoinMoin используя систему блокировок. Существует три уровня блокировки: предупреждение, закрытие, без предупреждения.
Если MoinMoin настроена на предупреждение (warn), тогда если кто-то попытается редактировать уже изменяемую страницу, ему будет выдано сообщение с пожеланием подождать, пока первый пользователь закончит редактирование.
Если MoinMoin настроена на закрытие (lock), тогда при попытке изменения редактируемой страницы, будет появляться сообщение о том, что страница закрыта и её нельзя редактировать, пока предыдущий пользователь не закончит.
Возможны и осложнения, когда пользователь начал редактирование, но не закончил, например по следующим причинам:
- ушел с редактируемой страницы по ссылке, не прервав редактирование;
- закрыл окно браузера без сохранения;
- нажал в браузере кнопку "назад";
- начал редактирование и забыл об этом.
Это приводит к тому, что страница будет постоянно закрыта. Поэтому эти действия ограничены по времени. По истечению определенного числа минут блокировка страницы снимается, но этот счетчик сбрасывается если вы просматриваете макет страницы. Т.е. если вы редактируете страницу и нажимаете кнопку 'Preview', то время блокировки продляется и вы можете спокойно редактировать страницу, в противном случае блокировка снимается и другие люди могут начать редактирование.
Настройка
Параметр edit_locking отвечает за поведение системы блокировки, он может принимать следующие значения:
None бокировка страниц выключена. Все предупреждения об одновременном редактировании отключаются
"warn <timeout>" - предупреждать о параллельном редактировании в течение определенного времени, так если указано "warn 10", то будут выдаваться предупреждающие сообщения в течение 10 минут с начала редактирования.
"lock <timeout>" - страница закрывается от редактирования на определенное время, так при "lock 5" страница закроется на 5 минут
Отмена при выходе
По причинам, поясненным выше, вы всегда должны использовать кнопку 'Cancel', чтобы закрыть окно редактирования, если у вас включена блокировка страниц.
Примеры
Для примера рассмотрим одновременное редактирование ВасейПетровым и МариейИвановой
- без блокировки (None)
JohnMiller starts editing a page and JaneDoe thinks she'll edit the same page. She has no idea that someone else is editing the page so they both edit away and hit save. It doesn't matter who started first and did the most editing, whoever hits save changes first will have their changes committed and the unfortunate 2nd editor will have to try and merge their changes in or lose them.
- предупреждение (warn)
JohnMiller starts editing a page and JaneDoe thinks she'll edit the same page. When she hits edit she'll see a warning telling her that someone else got there first. If she is polite she'll leave the page, but she can still save before John and he may lose his changes.
- закрытие (lock)
JohnMiller starts editing a page and JaneDoe thinks she'll edit the same page. When she hits edit she'll see a warning telling her that someone else got there first and the page is locked. She will have to wait for the page to become available.