-
Notifications
You must be signed in to change notification settings - Fork 7
BlankApplication Presentation
The BLANK Application is a collaborative CMS which allows different users to upload various contents and to create workspace to share these data. A configuration page allows to a special user (called superadministrator …) to custom the application about the user roles, the different content types, the different filters and other common stuff (Logo, colors, fonts and translations management).
The development of other modules will allow to plug some other advanced functionality, like the publication of the content through a specific front end or a meetings manager, for example.
The application specifications impose to be RESTful, to use Test-Driven and Behaviour-Driven development and all the best practices : Readable, commented and optmized code, benchmarking tools, … . That is already a dream but a big part of the job will deal with that soon.
User is the object that will deal with the authentication and the authorization of an user on the application. You can configure some features regarding user creation in the ‘General Settings’ like :
> * To allow the free user creation (It means that everybody can suscribe to the application) or no (In that case, just authorized user can create account)
> * To ask an email activation for the new account or no
> * To create a default private workspace for the user or no (It is interesting to allow user to play with content directly)
The concept of workspace is very large and highly configurable, every users can :
> * create workspaces (The creator of the workspace become automatically the administrator of the workspace.)
> * add users and attribute roles to them
> * manage the type of the workspace
> > * Private : Each user has a private workspace and his type cannot change. It is set by default.
> > * Closed : Only the administrator can add new users to this workspace.
> > * Mi-public : Users are allowed to send email requests to the administrator (for a subscription for example).
> > * Public : This kind of workspace allows users to subscribe as readers and also to send request like for mi-public ones.
> > * Archived : The workspace is archived and it is not possible to edit it and his items.
> * define the content types available for this workspace
> * define the type of workspaces possible for that workspace (!!)
The right management are done following a model Role-Permissions. In the application, there are two kinds of roles :
> * Level ‘system’ : You have first the ‘system’ role who allow an user to have permissions for the full application, like to create a workspace, an user (that are ‘system’ permissions).
> * Level ‘workspace’ : These roles define permissions for a specific workspace, like to edit or show this workspace or to add content in it (these permissions have the ‘workspace’ type.
Thanks to the Superadministration, you can add easily roles and permissions. It is very useful to can create new roles for the application, ‘system’ ones or ‘workspace’ ones, you just have to give it a name and to assign it the permissions you want.
Regarding the permissions, I advice you to take care when you add a new one because you will have to implement it directly in the code. You have the syntax name #{model}_#{action} to follow. Some works on the interface will be done later (classification of the permission, …).
By default, there are some roles define :
-
SYSTEM :
- Superadministrator : The legendary super user
- Administrator : The administrator of the system, getting all the rights less superadministration ones
- User : The basic logged user, very limited profile
-
WORKSPACE :
- Workspace administrator : User with full rights on this workspace, automatically assigned to the creator of that workspace
- Moderator : User allowed to do all the stuff less the administration and the deletion of the workspace
- Writer : User allowed to edit and create all the content of that workspace
- Reader : User allowed to read all the content of that workspace
The content of the application is managed via objects called Items.
A item is an object with generic attributes (allowing to define common behaviours whatever of the content type) and also specific ones (allowing to set the special feature of that item). An item is always linked to, for the less, one workspace.
There is also an Item object that allow to manage the generic part of the items.
The items have also generic actions linked on (add keyword, add comment, remove keyword, add to workspace, …) and specifics ones (play the video, download the file, …). It is also possible to retrieve the items under different format like XML, JSON or ATOM 1.0.
The default content types managed by our application are : Articles, Images, Audios, Videos, Files, Web feeds and Bookmarks. But it is free to add new content if you want (The way to do it will be explain later).
A search bar is following you during your navigation and allow you to find the content according to different criterions.
That research tool include :
- A full text search
- A search by conditions
- Different ways to order the resuts