Hi everybody,
I’m starting slowly the developement of two tools for MODx. I think these features should be added to the core of MODx even if they are not essential to everybody. I would like to have comments or suggestions about the features I want to implement in these tools.
DevState-X or "Downtime reducer"
This will let you choose between the "Development" and the "Production" modes for the whole CMS. When installing the tool, it will create a duplicate of each "sensible" tables in the database (documents, chunks, snippets, etc.) but without their content. When switching to the development mode, it will clear all the tables. After that, any modification made to a document, snippet, chunk, etc. will be stored to the corresponding duplicated table.
As long as you’ll be in development mode, a plugin will make sure that the good data is loaded. For example, if you decide to edit a document, the plugin will check if there is data for it in the duplicate table. If "development" data is found, this is the data that is going to be loaded and displayed. If no data is found, it will load the actual data in the standard table. The same thing will be true when previewing the documents or the whole website.
For the web users, only the standard data will be loaded as long as the CMS is in Development mode. When the admins set the mode back to "Production", all the data in the duplicate tables will be copied to the standard tables and will overwrite the old data.
The administration module will let the user choose the user groups that will have the right to change the CMS mode. It will also let the admins choose who will have the right to modify/create content while in development mode, etc. That way, you’ll have the possibility to make changes to snippets, chunks, documents and templates without having to worry about people seeing broken pages. This will also let you make important changes to the document and website structure without having to close it to the public.
DocDiff
This is a simple idea for websites with multiple users having the right to edit the same documents. Instead of keeping only the content of each page in the database, it will store only the "diff" between the document before and after the changes. By storing all the differences each time a page is modified, admins will have the right to roll-back changes made to pages easily without storing the whole content of a document each time it’s changed.
For the moment, I’m not sure about how to implement it, but I know that there is an "inline-diff" module included in the latest distribution of PEAR.
So, here are my two ideas. If anybody want to post comment (is it usefull or not, etc.) or suggestions (you should do it that way, etc.), I would be really happy. I don’t tell any release date because I don’t know how much time I’ll have to spend on the development. The only thing I can say is that I’ll work on DevState-X first.
Thanks,
Blaise Bernier
Blaise Bernier
www.medialdesign.com - Solutions for small business, hosting, design and more!