Steve,
I'm confused. Is this a question about SilverStripe, about CSS, or about your particular editor?
Assuming for now that's it's about SilverStripe, if you want clients to be able to choose a background image in the CMS, one way is to add a field to your HomePage page type. Then add code in your Page_Controller to pull in an appropriate CSS file. Each CSS file would have perhaps just the one line specifying the background image by accessing this field in the template. You could instead preprocess a single CSS file based on the value.
I recently added some functionality similar to this for a client. The code looked something like this:
class HomePage extends Page {
public static $db = array(
'ThemeStyle' => "Enum('default, beige_red, blue', 'default')"
);
...
function getCMSFields() {
$fields = parent::getCMSFields();
$themeStyleField = new DropdownField('ThemeStyle', 'Theme Style', singleton('HomePage')->dbObject('ThemeStyle')->enumValues()
);
$fields->addFieldToTab('Root.Content.SiteConfiguration', $themeStyleField);
return $fields;
}
...
class Page_Controller extends ContentController {
public function init() {
parent::init();
Requirements::themedCSS("layout");
Requirements::themedCSS("typography");
Requirements::themedCSS("form");
Requirements::css($this->themeStyleSheet());
}
function themeStyleSheet() {
$themeStyle = $this->getHomePage()->ThemeStyle;
return "themes/mytheme/css/styles/$themeStyle.css";
}
function getHomePage() {
return DataObject::get_one('HomePage');
}
}