Alright folks, the initial Tattoo code was committed to my branch in SVN around 9pm CST last night (
http://svn1.cvsdude.com/rethrash/tattoo/tattoo/branches/jason/trunk), if you are interested at getting an early peek at some of the things we have in store. Please note, all the code under /system/manager is temporarily there for reference until we finish implementation of all current MODx features -- it does not work as a manager, so don’t expect it to, and any remaining web resources will be moved out of there, especially the /system/manager/media directory
Lot’s of debugging and implementation work left before this will be usuable by an average MODx user, so I’d like to start soliciting for PHP developers who are interested in contributing to the initial Tattoo release, which I expect to have ready in no more than 3 months time (hopefully a lot sooner if I get enough quality contributors interested in pitching in quickly).
Here are some specific areas that need to be addressed:
[*] Finish re-implementation of Friendly URLs
[*] Finish implementation of PermissionElement and all Resource-derived classes to make use of PermissionElements and remove the UserGroup and ResourceGroup-based security tables/classes as PermissionElements will replace these.
[*] Add hierarchical Element relationship implementation, so any Element can be attached to any other Element. For instance a PermissionElement can be attached to a ScriptElement or PluginElement for adding security. Or a MetaElement can be attached to an Element to add additional functionality or information to the element.
[*] Convert core resources to native Tattoo Elements (I’m doing some examples now and will be posting SQL dumps of this initial data, which will also be useful for testing -- I’m sure there are bugs). ModuleElements still needs to be worked out (if we even need them, since Resources and Elements can be used anywhere, even to build/customize the manager), and I’ll definitely need help reimplementing the QuickEdit stuff (hint, hint Adam).
[*] Create Manager Resources -- that’s right, all manager pages will be Resources just like any other page and can be built in the same way. By default, you’ll have the web and mgr Contexts to work with, similar to MODx, to isolate the Resources. Contexts load their own configuration settings which overwrite the default system settings and can add any other context specific data for use by these Resources. Elements can also be isolated by Context.
[*] Complete the base CacheManager implementation and add configuration options to allow alternate CacheManagers to extend the base CacheManager and handle the caching in any way imaginable.
[*] Refactor the Propel BaseClass and BasePeerClass templates to reduce the amount of code in each BaseClass and BasePeerClass in the object model. This is based on recent changes to Propel itself; efforts to reduce the memory footprint and expensive include time for these large class files. The files are currently ridiculously large and full of methods that can easily be replaced with generic methods using PHP 5’s new Reflection capabilities (as used in the tattoo.ContentManager class).
[*] Write DeploymentPackage installer and complete implementation of the classes in tattoo.deployment
[*] Add configuration options for /assets and /system directory, so the locations can be changed
There’s more that I can’t think of right now, but I will leave the rest alone for now; I want to start getting other contributors involved in this before too much more is decided.
Speaking of that, I plan on sending out invitations to a variety of talented PHP OO coders I’d like to have contribute to the project’s early stages (let me know if you have any suggestions, or want an invitation to contribute in the early stages via
[email protected]), and I believe we’ll be offering an Early Access program at some point for those interested in paying for, well, early access to the project without being expected to contribute in some other way.
NOTE: All the classes are in /system/classes/, and specifically, all the CMS code is under /system/classes/tattoo/*. Don’t expect to see much in the tattoo.ContentManager class; all the methods associated with Resources and Elements (like parsing ElementTags) have been moved to the appropriate classes. See the collectElementTags() method in the tattoo.ElementPeer class to see the simple tag parser implementation, or /parsetags.php for a simple demonstration of what it does (not much), how it does it, and how quickly. Uncomment the echo’s as appropriate to see it interactively instead of how quickly it runs...
Lot’s more to come, including a tutorial for setting up a complete development environment for core coding on Tattoo using the latest Eclipse IDE with the latest PHPEclipse and Subclipse add-ons.
Now, give me some feedback or ask me some questions (please?)