The purpose of this project is to implement an API wrapper of MediaWiki in laravel framework.
The following components are required for this API:
2.1 Version Control
Every edition made by users shall be kept in database. The information stored shall at least contains followings:
administrators shall be able to track all changes and return to any version in history.
The period of history being stored shall be changeable, and be lifetime in default.
2.2 Permission management
For any project, there are 3 different users involved:
The user who creates the project. He can create new wiki pages under the project, but cannot override any page's permission settings.
The administrators. They have the highest permission. They have all permissions on any wiki pages.
They do not have any permission on default, but they could obtain any permission except creating pages through permission management.
For every page, users have 3 different permissions:
The one who creates the Wiki page. They have the highest permission, including delete, modify, add owners, add/delete editors, add/delete viewers. There could be indefinite number of owners of a wiki page, but cannot be zero.
Editor The one who can edit the wiki page.
Viewer The one who can view the content of a page.
2.2.1 Page Lock
There is a special case in permission system, page lock. A page could be locked when all owners agree.
Any owner could send a lock request, and when all other owners agree, the page shall be blocked from any editing.
2.2.2 Page Unlock
Any owner could send unlock request on a page, and when all other owners agree, the page shall return to normal state.
2.3 What-You-See-Is-What-You-Get Text Editor
Just like wikipedia editor.