public function __construct(array $path) { // Actions if ($path['id']) { if (DataCenterPage::userCan('remove')) { $this->actions['remove'] = array('page' => 'plans', 'type' => $path['type'], 'action' => 'remove', 'id' => $path['id']); } if (DataCenterPage::userCan('change')) { $this->actions['configure'] = array('page' => 'plans', 'type' => $path['type'], 'action' => 'configure', 'id' => $path['id']); } $this->actions['view'] = array('page' => 'plans', 'type' => $path['type'], 'action' => 'view', 'id' => $path['id']); } // Trail if ($path['id']) { $type = $path['type']; $id = $path['id']; } elseif (is_array($path['parameter']) && count($path['parameter']) >= 2) { $type = $path['parameter'][0]; $id = $path['parameter'][1]; } if (isset($id, $type)) { $include = false; foreach (array_reverse(self::$steps) as $step) { if ($step == $type) { $include = true; } if (!$include) { continue; } if ($step == 'plan') { $plan = DataCenterDB::getPlan($id); $this->trail[$plan->get('name')] = array('page' => 'plans', 'type' => 'plan', 'action' => 'view', 'id' => $plan->getId()); } else { $link = DataCenterDB::getLink('asset', $id); $this->trail[$link->get('name')] = array('page' => 'plans', 'type' => $step, 'action' => 'view', 'id' => $link->getId()); $id = $link->get('parent_link'); if ($id == null) { $id = $link->get('plan'); } } } $this->trail = array_reverse($this->trail); } }
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 configure($path) { // Checks if... if (!$path['id'] && is_array($path['parameter']) && count($path['parameter']) >= 3 && $path['parameter'][0] == 'rack') { $object = DataCenterDB::getAsset('object', $path['parameter'][2]); $model = $object->getModel(); $rackLink = DataCenterDB::getAssetLink($path['parameter'][1]); $rack = $rackLink->getAsset(); $plan = DataCenterDB::getPlan($rackLink->get('plan')); $objectLink = DataCenterDBAssetLink::newFromValues(array('name' => $model->get('kind'), 'plan' => $plan->getId(), 'parent_link' => $rackLink->getId(), 'asset_type' => 'object', 'asset_id' => $object->getId(), 'z' => 1, 'orientation' => 0)); // Sets action specific parameters $formParameters = array('label' => 'attach', 'hidden' => array('plan', 'parent_link', 'asset_type', 'asset_id'), 'success' => array('page' => 'plans', 'type' => $path['parameter'][0], 'action' => 'view', 'id' => $path['parameter'][1])); $headingParameters = array('message' => 'attaching-type', 'type' => 'object'); } else { // Gets asset from database $objectLink = DataCenterDB::getAssetLink($path['id']); // Gets object that object link links to $object = $objectLink->getAsset(); // Gets plan from database $plan = DataCenterDB::getPlan($objectLink->get('plan')); // Gets rack link object is linked to $rackLink = DataCenterDB::getAssetLink($objectLink->get('parent_link')); // Extracts rack from rack link $rack = $rackLink->getAsset(); // Sets action specific parameters $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'plans', 'type' => 'object', 'action' => 'view', 'id' => $path['id'])); $headingParameters = array('message' => 'configuring-type', 'type' => 'object'); } // Builds javascript that references the renderable asset $target = array('dataCenter.renderer.getTarget' => array(DataCenterJs::toScalar('plan')), 'getModule'); $rackId = $rack->getId(); $rackModel = $rack->getModel(); $objectModel = $object->getModel(); $objectId = $object->getId(); $maxZ = $rackModel->get('units') - $objectModel->get('units') + 1; // Builds form parameters $formFields = array('name' => array('type' => 'string'), 'position' => array('type' => 'number', 'field' => 'z', 'min' => 1, 'max' => $maxZ, 'effect' => DataCenterJs::chain(array_merge($target, array('setObjectPosition' => array(DataCenterJs::toScalar($rackId), DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false)), 'orientation' => array('type' => 'number', 'min' => 0, 'max' => 1, 'effect' => DataCenterJs::chain(array_merge($target, array('setObjectOrientation' => array(DataCenterJs::toScalar($rackId), DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false))); // 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' => 'object'), 'row' => $objectLink, 'fields' => $formFields))))), DataCenterUI::renderWidget('plan', array('plan' => $plan, 'current-rack' => $rack->getId(), 'look-at-rack' => $rack->getId(), 'current-object' => $object->getId(), 'include' => !$path['id'] ? $objectLink : null)))); }
public function configure($path) { // Checks if... if (!$path['id'] && is_array($path['parameter']) && count($path['parameter']) >= 3 && $path['parameter'][0] == 'plan') { // Gets plan from database $plan = DataCenterDB::getPlan($path['parameter'][1]); // Creates new asset with default parameters $rack = DataCenterDB::getAsset('rack', $path['parameter'][2]); // Creates new asset link $rackLink = DataCenterDBAssetLink::newFromValues(array('name' => DataCenterUI::message('type', 'rack'), 'plan' => $plan->getId(), 'asset_type' => 'rack', 'asset_id' => $rack->getId(), 'x' => 1, 'y' => 1, 'orientation' => 0)); // Sets action specific parameters $formParameters = array('label' => 'attach', 'hidden' => array('plan', 'asset_type', 'asset_id'), 'success' => array('page' => 'plans', 'type' => 'plan', 'action' => 'view', 'id' => $path['parameter'][1])); $headingParameters = array('message' => 'attaching-type', 'type' => 'rack'); } else { // Gets asset from database $rackLink = DataCenterDB::getAssetLink($path['id']); // Gets rack that rack link links to $rack = $rackLink->getAsset(); // Gets plan from database $plan = DataCenterDB::getPlan($rackLink->get('plan')); // Sets action specific parameters $formParameters = array('label' => 'save', 'hidden' => array('id'), 'success' => array('page' => 'plans', 'type' => 'rack', 'action' => 'view', 'id' => $path['id'])); $headingParameters = array('message' => 'configuring-type', 'type' => 'rack'); } // Gets parent asset from database $space = $plan->getSpace(); // Builds javascript that references the renderable asset $target = array('dataCenter.renderer.getTarget' => array(DataCenterJs::toScalar('plan')), 'getModule'); $objectId = $rack->getId(); // Builds form parameters $formParameters = array_merge($formParameters, array('do' => 'save', 'failure' => $path, 'action' => array('page' => 'plans', 'type' => 'rack'), 'row' => $rackLink, 'fields' => array('name' => array('type' => 'string'), 'position' => array('fields' => array('x' => array('field' => 'x', 'min' => 1, 'max' => $space->get('width')), 'y' => array('field' => 'y', 'min' => 1, 'max' => $space->get('depth'))), 'type' => 'position', 'effect' => DataCenterJs::chain(array_merge($target, array('setRackPosition' => array(DataCenterJs::toScalar($objectId), '{this.x}.value', '{this.y}.value', DataCenterJs::toScalar(true)))), false), 'mode' => 'iso'), 'orientation' => array('type' => 'number', 'min' => 0, 'max' => 3, 'effect' => DataCenterJs::chain(array_merge($target, array('setRackOrientation' => array(DataCenterJs::toScalar($objectId), '{this}.value', DataCenterJs::toScalar(true)))), false))))); // 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', $formParameters))), DataCenterUI::renderWidget('plan', array('plan' => $plan, 'zoom-from-rack' => $rack->getIdOrZero(), 'current-rack' => $rack->getId(), 'include' => $rackLink)))); }