Currently, we have three pre-edit check:
- securityLevel: a warning when the edited page belong to an extension (can be an error with some configuration change)
- documentLock a warning when the edit page is currently locked by another user
- requiredRights a warning when the required rights analyzer finds some issue in the difference between the rights of the document author and the rights of the current user (this check is currently deactivated by default)
When a user edits a page and a check identifies an issue, an explanation message is displayed to the user instead of going directly to the edit page.
From there, the user can either cancel the edition, or force the edition.
When force is used on a page, this is currently stored for the remainder of the user’s session.
Once a page is forced, all the pre-edit check warnings are ignored (but the errors are always displayed).
Consequently, the user will never be warned if:
- another user locked the page
- the required rights changed because another user updated the document
Meaning that a user can for instance edit a page and create a conflict without being aware of it.
I propose to change the way the force mechanism works to allow each check to have it’s own lifecycle:
For a given document:
- securityLevel would stay with the same behavior
- documentLock I propose to only raise a warning again if the user locking the page is not the same as the one from the previous check
- requiredRights I propose to raise a warning again if the required rights analyzed on the page differs from the ones of the previous time the page was forced edit
At the architecture level, this means that each checker will be in charge of his own lifecycle, and of caching the information required to know if the new check can be skipped.