public function configure($path) { // Detects mode if (!$path['id']) { if (is_array($path['parameter']) && count($path['parameter']) >= 2 && $path['parameter'][0] == 'space') { // Gets space from database $space = DataCenterDB::getSpace($path['parameter'][1]); // Creates new component $plan = DataCenterDBPlan::newFromValues(array('space' => $path['parameter'][1], 'tense' => 'present', 'name' => $space->get('name'))); // Sets 'do' specific parameters $formParameters = array('label' => 'create', 'hidden' => array('space'), 'success' => array('page' => 'plans')); $headingParameters = array('message' => 'adding-type', 'type' => 'plan'); } else { throw new MWException('Invalid parameters. space,# expected.'); } } else { // Gets component from database $plan = DataCenterDB::getPlan($path['id']); // Sets 'do' specific parameters $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'plans', 'type' => 'plan', 'action' => 'view', 'id' => $path['id'])); $headingParameters = array('message' => 'configuring-type', 'type' => 'plan'); } // Returns 2 columm layout with a form and a scene return DataCenterUI::renderLayout('columns', array(DataCenterUI::renderLayout('rows', array(DataCenterUI::renderWidget('heading', $headingParameters), DataCenterUI::renderWidget('form', array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'plans', 'type' => 'plan'), 'row' => $plan, 'fields' => array('tense' => array('type' => 'tense', 'disable' => !$path['id'] ? array('past') : array()), 'name' => array('type' => 'string'), 'note' => array('type' => 'text'))))))), DataCenterUI::renderWidget('plan', array('plan' => $plan)))); }
public function save(array $data, $type) { if (!DataCenterPage::userCan('change')) { return false; } switch ($type) { case 'plan': $plan = DataCenterDBPlan::newFromValues($data['row']); $plan->save(); return true; case 'rack': case 'object': $link = DataCenterDBAssetLink::newFromValues($data['row']); $link->save(); return true; } return false; }