[Mediawiki-l] Approval / Validation

John Moorhouse john.moorhouse at 3jays.me.uk
Thu Jan 11 16:38:27 UTC 2007

I hope folk will understand that I don't really want to have to do this, 
but following a slight problem I've been asked to look at providing a 
mechanism for approval of pages on a wiki that we are running to deliver 
social services policy & procedures to staff.

I had set it up so that only logins in the group 'editors' could change 
the article text but allowed all logins to edit the talk pages, however 
management want me to add a system so that changes to the 'article' page 
are approved before they are visible to everyone. This goes against the 
ethos of the wiki I know, but all our users find the wiki very easy to 
use to find things in and appreciate the ability to add to the talk pages.

Accepting that I'm going to have to do this, or move the whole lot into 
something else and loose the advantages of the wiki for users, I would 
appreciate comments on the following approach.

I would have two special groups of users, 'editors' and 'approvers'

Mediawiki already has multiple versions of pages in the revision table, 
I am proposing to add a new field to the pages table pages.page_auth and 
would populate this with the revision.rev_id of the last authorised 
revision of the page, similar to pages.page_latest having the 
revision.rev_id of the latest version.

If a person browsing the wiki is not in either the editors or approvers 
groups then the page would be rendered using the rev_id in the new 
pages.page_auth rather than the one in pages.page_latest. This would 
allow users to see the latest authorised version but allow editors to 
continue developing the pages.

I would also add two further fields to the pages table pages.ready_auth 
and pages.previous_auth, as well as a new field in revision 
revision.authed_by, this would allow me to:-

1. add a tab on the screen (like the watch / unwatch) visible to 
'editors' that would allow them to set/unset the binary flag 
pages.ready_auth to show a page is ready to be authorised, generating a 
list of approvals waiting for the appovers

2. add a tab on the screen (like the watch / unwatch) visible to 
approvers that would allow them to approve the page, when they do this I 
would get the value currently in the pages.page_auth copied to 
pages.previous_auth so we can roll back to the previously authorised 
version if needed, copy the current pages.page_latest to pages.page_auth 
so that normal user would now see the newly approved revision. I can 
also record in the revision.authed_by who authorised the the page to go 

3. If a page is has been authorised but needs to rolled back we now have 
the previous revision in pages.previous_auth so we can roll back.

I know this is not what we all want wiki's for but rather than loose 
what we have have I missed any really salient points in what I'm trying 
to do.



More information about the MediaWiki-l mailing list