• Immutable Page
  • Info
  • Attachments

Bloquear a edição concorrente

Se duas pessoas tentarem editar a mesma página de wiki ao mesmo tempo, podem ocorrer alguns conflitos. Sem um sistema de aviso, um dos editores conseguir'guardar a página, deixando uma mensagem de aviso de conflito ao outro editor. Uma forma simples de contornar isto é exibir avisos aos editores que tentam editar páginas wiki que já estão a ser editadas, ou seja, o wiki regista as páginas em edição.

Isto pode ser feito no Moin utilizando o sistema editlock. Existem três níveis de bloqueio: warn (avisar) , lock (bloquear) e None (Nenhum) (desligado).

Se configurar o Moin para warn, quando alguém tentar editar uma página em edição, é-lhes apresentada uma mensagem de aviso pedindo-lhes para esperar que o editor actual termine a edição.

O Moin pode ser igualmente configurado para lock uma página enquanto estiver a ser editada. Aqui, se alguém tentar editar uma página em edição, receberá uma mensagem que lhe comunica que a página está bloqueada e que não será possível editá-la até o editor terminar a edição.

Uma complicação desta funcionalidade é a possibilidade de uma sessão de edição ter começado, mas não ter terminado. Por exemplo:

  • Alguém prime o botão de edição e depois clica numa ligação para sair da página sem cancelar a edição.
  • A janela do navegador é fechada sem cancelar a edição.
  • O botão de retroceder é utilizado.
  • Alguém começa a edição de uma página, esquece-se e deixa-a aberta durante toda a noite.

Isto iria resultar numa página com avisos permanentes ou a ser bloqueada permanentemente. Assim, ambos os níveis warn e lock têm uma funcionalidade de timeout (expira). Depois de um determinado número de minutos, a funcionalidade expira. Tenha em consideração que o cronómetro recomeça quando clicar em Pré-visualizar. Se estiver a editar uma página activamente e clicar em Pré-visualizar, o moin assume que ainda está ocupado e o cronómetro recomeça de novo. Se deixar a página, ou a abandonar por mais tempo do que o permitido pelo cronómetro, o bloqueio de edição expira e as outras pessoas são livres de editar a página.

Configuração

A variável de configuração edit_locking controla o comportamento dos sistema de bloqueio. Pode ter os seguintes valores:

  • None, ou seja, não existe bloqueio de edição. A funcionalidade é desligada e ninguém é avisado ou impedido de editar uma página simultaneamente.

  • O "warn <timeout>" diz ao Moin para avisar os que editam uma página concorrencialmente, com um tempo de expirar específico, por exemplo "warn 10" avisará 10 minutos depois do início da edição.

  • O "lock <timeout>" diz ao Moin para bloquear uma página depois do início da edição, durante uma quantidade de tempo definida, por exemplo, "lock 5" bloqueia uma página durante 5 minutos.

Cancelar uma edição

Pelos motivos apresentados em cima, na descrição do tempo de expirar, deve utilizar sempre o botão Cancelar para cancelar uma edição se tiver activado o bloqueio de edição!

Exemplo

Interacção de exemplo entre JohnMiller e JaneDoe...

sem bloqueio (None)

JohnMiller começa a editar uma página e JaneDoe pensa editar a mesma página. Ela não faz ideia que outra pessoa está a editar a página, e continuam ambos a editá-la e primem Guardar. Não interessa quem começou primeiro ou quem fez mais edições, quem premir o botão Guardar Alterações primeiro terá as suas alterações guardadas e o infortunado segundo editor terá de tentar fundir as suas alterações ou irá perdê-las.

avisos de edição (warn)

JohnMiller começa a editar uma página e JaneDoe pensa editar a mesma página. Ao clicar em editar, ela verá uma mensagem avisando-a que alguém está a editar essa página. Se ela for educada, ela deixará a página, mas ela poderá ainda guardar antes de John e ele poderá perder as suas alterações.

bloqueio de edição (lock)

JohnMiller começa a editar uma página e JaneDoe pensa editar a mesma página. Ao clicar em editar, ela verá uma mensagem avisando-a que alguém está a editar essa página e a página é bloqueada. Ela terá de esperar que a página fique disponível.