Blocco alle modifiche
Se due persone cercano di modificare la stessa pagina wiki nello setto momento, possono verificarsi dei conflitti. Senza un sistema di avviso, uno degli editori può salvare la pagina lasciando l'altro editore con un avviso riguardo i conflitti verificati. Per non incorrere in questi errori, è possibile visualizzare un avviso alle persone che cercano di modificare una pagina wiki già in fase di modifica da qualcun altro (il wiki tiene traccia della pagine che vengono modificate).
Per fare questo è possibile utilizzare il sistema di editlock. Ci sono tre livelli di blocco: di avviso (warn), di blocco (block) e nessuno (None).
Se Moin viene configurato affinché avvisi quando qualcuno cerca di modificare una pagina già aperta in modifica, viene visualizzato un avviso indicante di aspettare finché l'utente che sta modificando la pagina non ha completato il suo lavoro.
Moin può essere impostato anche per bloccare una pagina in modifica, solo durante la modifica. Se qualcuno cerca di modificare la pagina, riceverà un messaggio indicante che la pagina è bloccata e non sarà possibile modificarla finché l'utente non ha completato il suo lavoro.
Una complicazione di questa caratteristica si può verificare quando una sessione di modifica viene iniziata, ma non completata:
- Qualcuno modifica una pagina e successivamente fa clic su un collegamento uscendo dalla pagina senza annullare la modifica.
- La finestra del browser viene chiusa senza annullare la modifica.
- Viene premuto il pulsante del browser per tornare indietro.
- Qualcuno inizia a modificare una pagina e la lascia aperta indefinitamente.
Con ognuno di questi scenari la pagina risulterebbe avere un avviso permanente o essere bloccata indefinitamente. Perciò, le opzioni di avviso e blocco dispongono di un timeout: dopo alcuni minuti scadono. Il contatore ricomincia quando viene premuto il pulsante per l'anteprima. Se si sta modificando la pagina e viene premuto il pulsante per l'anteprima, si presume che si stia lavorando attivamente alla pagina e il contatore riparte da zero. Se si lascia la pagina o si esce per più del tempo minimo consentito, il blocco scade e le altre persone possono modificare liberamente la pagina.
Configurazione
La variabile edit_locking controlla il comportamento del sistema di blocco. Può avere i seguenti valori:
None, non c'è alcun blocco. In questo modo la caratteristica è disattivata e nessuno è avvisato o fermato alle modifiche simultanee della pagina.
warn <timeout> indica a Moin di avvisare chiunque cerchi di modificare simultaneamente una pagina, con un timeout specifico. Per esempio, "warn 10" avviserà per 10 minuti dalla prima modifica.
lock <timeout> indica a Moin di bloccare la pagina per il tempo indicato dopo la prima modifica. Per esempio, "lock 5" blocca una pagina per 5 minuti.
Annullare una modifica
Per quanto detto precedentemente nella descrizione del timeout, è necessario sempre usare il pulsante "Annulla" per annullare una modifica se è stato abilitato il blocco.
Esempi
Alcuni esempi con Alice e Bob:
nessun blocco (None)
- Alice inizia a modificare una pagina e Bob decide di modificare la stessa pagina. Non sa che qualcun altro sta modificando la stessa pagina, così entrambi fanno le loro modifiche e salvano il tutto. Non importa chi abbia iniziato per primo e abbia fatto più modifiche, chi salva per primo apporterà le modifiche alla pagina e il secondo dovrà unire le modifiche fatte o annullare le sue.
avvisi di modifica (warn)
- Alice inizia a modificare una pagina e Bob decide di modificare la stessa pagina. Quando preme il pulsante per la modifica, viene avvisato che qualcun altro la sta modificando. Se è gentile, lascia la pagina, ma può comunque salvare prima di Alice facendole perdere le sue modifiche.
blocco delle modifiche (block)
- Alice inizia a modificare una pagina e Bob decide di modificare la stessa pagina. Quando preme il pulsante per la modifica, viene avvisato che qualcun altro la sta modificando e la pagina è bloccata. Dovrà quindi aspettare che Alice abbia finito di apportare le sue modifiche.