Skip to content

Instantly share code, notes, and snippets.

@nicholasf
Created October 8, 2009 09:00
Show Gist options
  • Save nicholasf/204875 to your computer and use it in GitHub Desktop.
Save nicholasf/204875 to your computer and use it in GitHub Desktop.
Just hacking some ideas for a CMS.
Notes
Premise:
Know what problems not to solve when writing a CMS, in their absence find easier ones. A dumb CMS.
Separation of Concerns
----------------------
Logical division of applications (though could share same DB, probably use Rack middleware).
Front application - CMS.
Other app.s where building logic outside of a CMS but being able to call on the CMS easily is desirable.
structured forms (e.g. STF) - reuse of CMS
complex workflows
Leverage of Functionality
-------------------------
Administration - admin. templates should be able to be reused in the hosting app..
Restful behaviour will ensure integration. User accounts and privileges should be integrated somehow (not hard).
CMS.
Conceived as a service, rather than an inclusive complex system.
Folder - FolderEntry (subclassable) - Page
To add a new CMS type for folders, e.g. attachment, you AttachmentFolderEntry < FolderEntry, and Attachment belongs_to AttachmentFolderEntry through a polymorphic association.
All Folder entries can be ordered easily on their folder.
Roles - guest, member, admin. (roles can be made)
Each Folder has CRUD assignments to roles - so R for guest, member, admin, is accessible content for everyone. If it's D for admins, only admins can delete what is in that folder. These rules define all access across the application, at the front and the back cms admin area (e.g. if a content editor role is invented, and a content editor wants to edit a page in the CMS admin, only pages in folders with RU will be presented in the controller).
Alpha version:
Folder, page, users and roles, admin system integrated across.
How do they integrate?
----------------------
Content:
All content is restful and is served to other app.s is security is satisfied. The format of the request is either html or xml.
For generic content inclusion a standard CMS fetcher account should be used. This should be separate to the admin account.
Users:
Not sure yet. Users in the front application will have their own models and security rules.
Paging?
Further ideas
-------------
It would be great to have a generator which the front app. could call to produce admin. UIs.
There's no reason why a CMS instance couldn't service a number of sites, each with a different folder hierarchy.
Sancho CMS is named after Don Quixote's sidekick - Sancho Panza http://en.wikipedia.org/wiki/Sancho_Panza .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment