KernelNewbies:

Блокировки изменений

Блокирование одновременного редактирования

Если двое (или, в общем случае, несколько) пользователей пытаются одновременно редактировать одну и ту же страницу вики единовременно, то могут возникнуть довольно неприятные конфликты редактирования. В случае отсутствия какой-либо систему предупреждения конфликтов один из пользователей может сохранить страницу, что приведёт к появлению сообщения о конфликте при попытке сохранить свои правки другим пользователем. Простым способом избежать этого является показ предупреждающих сообщений пользователям при попытке начать редактирование страницы в случае, если она уже редактируется кем-то другим; таким образом, вики-сервер отслеживает список редактируемых страниц.

В рамках МойнМойн это может быть сделано посредством использования системы блокировки изменений. Существует три режима работы данной системы: неактивированное («None»), режим предупреждения о возможных конфликтах («warn») и режим блокирования изменений («lock»).

Если система блокировки изменений сконфигурирована в режиме предупреждения («warn»), то когда кто-то пытается изменить страницу, которая уже редактируется, он получит предупреждающее сообщение , предлагающее подождать, пока пользователь, редактирующий страницу в данный момент, не закончит правки.

МойнМойн может быть также сконфигурирован в режиме блокирования изменений («lock»), при этом, если кто-то пытается изменить страницу, уже редактируемую другим пользователем, то он получит сообщение о том, что страница заблокирована и недоступна для редактирования, пока изменяющий её пользователь не закончит внесение правок.

С данной функцией могут возникнуть проблемы в случае, если редактирование было начато, но не было завершено, например:

Это может привести к ситуации, когда страница блокируется навсегда (или же появляются постоянные предупреждения о конфликтах). В связи с этим, режимы предупреждения и блокирования имеют параметр — время действия («timeout»). После истечения указанного в конфигурации вики количества времени, блокировка снимается. Блокировка возобновляется каждый раз при повторном запросе страницы редактирования (то есть, при вызове предварительного просмотра или проверке орфографии). Если же по истечении заданного срока никаких действий данного характера со стороны пользователя не происходило, то блокировка истекает и другие пользователи имеют возможность свободно редактировать страницу.

Настройка

Параметр конфигурации edit_locking (подробнее см. КакНастраивать) за режим работы системы блокировки. Он может принимать следующие значения:

Отмена редактирования

По причинам, описанным выше, необходимо всегда использовать кнопку «Cancel» для отмены редактирования, в случае, если в конфигурации вики включена блокировка страниц.

Примеры

Для примера, рассмотрим процесс одновременного редактирования страницы пользователями ВасяПетров и МарияИванова при различных режимах системы блокировки:

Система блокировки не активирована («None»)

ВасяПетров начинает редактировать страницу и МарияИванова также начинает внесение правок. Так как каждый из них не имеет представления о том, что кто-то другой также правит страницу, они вносят свои изменения и нажимают кнопку «Save Changes». Вне зависимости от того, кто начал редактирование первым и/или внёс большее количество изменений, тот, кто нажал «Save Changes» первым, сохранит свои изменения и второй пользователь будет поставлен перед необходимостью объединять свои правки с внесёнными или же потерять их.

Предупреждение («warn»)

ВасяПетров начинает редактировать страницу, после чего МарияИванова также хочет внести свои изменения. Когда она вызывает редактор, она видит предупреждение, информирующее её о том, что другой пользователь начал изменение страницы первым. Корректным поведением является отмена редактирования, тем не менее, есть возможность продолжить редактирование и привести к необходимости разрешать конфликт правок одному из пользователей.

Блокирование («lock»)

ВасяПетров начинает редактировать страницу, после чего МарияИванова также хочет внести свои изменения. Когда она вызывает редактор, она видит предупреждение, информирующее её о том, что другой пользователь начал изменение страницы первым и что страница в связи с этим заблокирована. МарияИванова должна подождать, пока страница не станет доступной.