MissionControl is a simple CMS built on the CakePHP framework version 1.3.
This work-in-progress CMS has evolved gradually and somewhat inconsistently out of many of my projects from the last couple of years, and until now was never packaged up as a whole. It is not production-ready in this form and hasn't undergone much testing, so please be wary! It's intended for developers with a good knowledge of CakePHP and will not make a lot of sense to others yet.
There is a more elegant, wordpressy CakePHP CMS called Croogo which looks better in many ways than this, so you might want to look there instead...
The main idea behind MissionControl is to be as flexible as possible, to allow building many different types of websites and web applications on top, using all the benefits that CakePHP brings.
It is not a blog – heck, it is not even a blog (yet). It is designed to be fairly client- and designer-friendly and one important step towards this goal is the idea of "content areas" where each page template can have arbitrary areas marked as editable by the designer/developer. I had planned to include a visual in-place editing mode where these content areas are editable in context if desired, but this has not materialised yet.
Each "content area" can have many "blocks" inserted into it. At the moment these blocks always contain HTML edited with TinyMCE, but the eventual goal is to allow different types of blocks to be inserted that could be provided by other plugins, e.g. "form" blocks, "image gallery" blocks etc.
At the moment it is not really under active development but I'd like to offer this to the world to see if anyone can build on it.
- HTTP Server. Tested with Apache 1.2
- Mod-rewrite configured via .htaccess files in
webrootand the root application directory if the docroot is pointed there instead of
webroot. See here for info.
- PHP 4.3.2+. Tested on PHP 5 so not sure how compatible it is with 4.
- MySQL 4+
- Make sure the
webroot/filesdirectories are writable
- The core CakePHP v1.3
cakedirectory which should be placed alongside this directory. If placed elsewhere, the
webroot/index.phpfile must be updated to point at the new location.
- tinymce in the webroot
- PHP-GD image library
- For the developer only: Console access to the
cakecommand, for managing access-control and fixtures. See here for help setting this up.
This directory is just a standard CakePHP 'app' directory, with a few extras. It requires (and must be able to find):
- the MissionControl core plugin
- the MissionControl users plugin
- the DebugKit plugin
- the AclExtras plugin
There is no automatic installer yet I'm afraid. Instead, please follow these steps:
Clone this project:
git clone git://github.com/jamiemill/missioncontrol.git your_new_site_directory
Make sure cake's core
cakedirectory (or a symlink) is sitting alongside it.
Pull in the necessary submodules:
cd your_new_site_directory && git submodule init && git submodule update
This will initialise the following submodules:
plugins/core [git://github.com/jamiemill/missioncontrol_core.git] plugins/users [git://github.com/jamiemill/missioncontrol_users.git] plugins/file_library [git://github.com/jamiemill/missioncontrol_file_library.git] plugins/news [git://github.com/jamiemill/missioncontrol_news.git] plugins/acl_extras [git://github.com/markstory/acl_extras.git] plugins/debug_kit [git://github.com/cakephp/debug_kit.git]
Fetch a copy of the TinyMCE jQuery package and drop the
Create a database and remember the name and connection settings
config/database.phpand populate it with your database settings
Import the SQL dump from
Make sure the
tmpdirectory and all contents are writable by the webserver
webroot/filesis writable by the webserver
You should now be able to browse to the site and see a rather mundane homepage saying:
This is uneditable text in the home page template. here's some dynamic content!
You can log in at
/admin/to get to the CMS itself.
email: firstname.lastname@example.org password: password
Obviously these must be changed!
You should also change the
config/core.phpbut this will invalidate your password, so please do this after you add your own administrator account with a valid email so that you can reset your password via the forgotten password procedure. (NOTE: CURRENTLY EMAIL SENDING IS PROBABLY NOT WORKING SO YOU ARE ON YOUR OWN HERE FOR NOW)
All of MissionControl's functionality is packaged as a suite of CakePHP "plugins", stored in the usual
Plugin view files can be overidden on a site-by-site basis by duplicating a file into
Any site-specific logic would usually be manifested in the creation of new models/views/controllers outside the plugin directories in the usual CakePHP way.
Administrative pages are found via the
/admin/ route prefix. This does not correspond to a directory, it's a special routing set up in the configuration of this site.
The site's root
config/bootstrap.php file contains some essential logic and configuration necessary for tying everything together. (TODO: explain more)
Each plugin contains a
config/routes.php file which defines extra routes specific to that plugin.
Please see the core readme inside the core plugin for information about how it actually works and how to build on it.