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

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

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

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

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

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

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

  • Пользователь вызвал редактирование страницы и затем перешёл по ссылке, не отменив своё действие.
  • Окно обозревателя было закрыто.
  • Была нажата кнопка «Назад».
  • Пользователь начал редактирование и забыл про него, оставив открытым окно редактирования.

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

Настройка

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

  • «None» — блокировка страниц отключена. Предупреждения об одновременном редактировании отсутствуют.

  • «"warn <минуты>"» — режим предупреждения об одновременном редактировании. В качестве параметра указывается количество минут с момента последнего вызова редактора, в течение которого предупреждение будет показываться тем, кто попытается редактировать страницу. Например, при указании «"warn 10"», предупреждения о возможном конфликте редактирования будут выдаваться другим пользователям в течение 10 минут с момента последнего вызова редактора пользователем, который начал редактировать страницу.

  • «"lock <минуты>"» — режим блокирования страницы от одновременного редактирования. В качестве параметра указывается количество минут с момента последнего вызова редактора. Например, при указании «"lock 5"» страница будет заблокирована на 5 минут.

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

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

Примеры

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

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

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

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

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

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

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