Differential D14503 Diff 35174 src/applications/transactions/controller/PhabricatorEditEngineConfigurationViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/transactions/controller/PhabricatorEditEngineConfigurationViewController.php
| Show All 33 Lines | $header = id(new PHUIHeaderView()) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setPolicyObject($config) | ->setPolicyObject($config) | ||||
| ->setHeader(pht('Edit Form: %s', $config->getDisplayName())); | ->setHeader(pht('Edit Form: %s', $config->getDisplayName())); | ||||
| $box = id(new PHUIObjectBoxView()) | $box = id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->addPropertyList($properties); | ->addPropertyList($properties); | ||||
| $field_list = $this->buildFieldList($config); | |||||
| $crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
| if ($is_concrete) { | if ($is_concrete) { | ||||
| $crumbs->addTextCrumb(pht('Form %d', $config->getID())); | $crumbs->addTextCrumb(pht('Form %d', $config->getID())); | ||||
| } else { | } else { | ||||
| $crumbs->addTextCrumb(pht('Builtin')); | $crumbs->addTextCrumb(pht('Builtin')); | ||||
| } | } | ||||
| if ($is_concrete) { | if ($is_concrete) { | ||||
| $timeline = $this->buildTransactionTimeline( | $timeline = $this->buildTransactionTimeline( | ||||
| $config, | $config, | ||||
| new PhabricatorEditEngineConfigurationTransactionQuery()); | new PhabricatorEditEngineConfigurationTransactionQuery()); | ||||
| $timeline->setShouldTerminate(true); | $timeline->setShouldTerminate(true); | ||||
| } else { | } else { | ||||
| $timeline = null; | $timeline = null; | ||||
| } | } | ||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild( | ->appendChild( | ||||
| array( | array( | ||||
| $box, | $box, | ||||
| $field_list, | |||||
| $timeline, | $timeline, | ||||
| )); | )); | ||||
| } | } | ||||
| private function buildActionView( | private function buildActionView( | ||||
| PhabricatorEditEngineConfiguration $config) { | PhabricatorEditEngineConfiguration $config) { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $engine_key = $this->getEngineKey(); | $engine = $config->getEngine(); | ||||
| $engine_key = $engine->getEngineKey(); | |||||
| $can_edit = PhabricatorPolicyFilter::hasCapability( | $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
| $viewer, | $viewer, | ||||
| $config, | $config, | ||||
| PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
| $view = id(new PhabricatorActionListView()) | $view = id(new PhabricatorActionListView()) | ||||
| ->setUser($viewer); | ->setUser($viewer); | ||||
| $key = $config->getIdentifier(); | $form_key = $config->getIdentifier(); | ||||
| $base_uri = "/transactions/editengine/{$engine_key}"; | $base_uri = "/transactions/editengine/{$engine_key}"; | ||||
| $is_concrete = (bool)$config->getID(); | $is_concrete = (bool)$config->getID(); | ||||
| if (!$is_concrete) { | if (!$is_concrete) { | ||||
| $save_uri = "{$base_uri}/save/{$key}/"; | $save_uri = "{$base_uri}/save/{$form_key}/"; | ||||
| $view->addAction( | $view->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName(pht('Make Editable')) | ->setName(pht('Make Editable')) | ||||
| ->setIcon('fa-pencil') | ->setIcon('fa-pencil') | ||||
| ->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
| ->setWorkflow(true) | ->setWorkflow(true) | ||||
| ->setHref($save_uri)); | ->setHref($save_uri)); | ||||
| $can_edit = false; | $can_edit = false; | ||||
| } else { | } else { | ||||
| $edit_uri = "{$base_uri}/edit/{$key}/"; | $edit_uri = "{$base_uri}/edit/{$form_key}/"; | ||||
| $view->addAction( | $view->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName(pht('Edit Form Configuration')) | ->setName(pht('Edit Form Configuration')) | ||||
| ->setIcon('fa-pencil') | ->setIcon('fa-pencil') | ||||
| ->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
| ->setWorkflow(!$can_edit) | ->setWorkflow(!$can_edit) | ||||
| ->setHref($edit_uri)); | ->setHref($edit_uri)); | ||||
| } | } | ||||
| $use_uri = $engine->getEditURI(null, "form/{$form_key}/"); | |||||
| $view->addAction( | |||||
| id(new PhabricatorActionView()) | |||||
| ->setName(pht('Use Form')) | |||||
| ->setIcon('fa-th-list') | |||||
| ->setHref($use_uri)); | |||||
| $reorder_uri = "{$base_uri}/reorder/{$form_key}/"; | |||||
| $view->addAction( | |||||
| id(new PhabricatorActionView()) | |||||
| ->setName(pht('Reorder Fields')) | |||||
| ->setIcon('fa-sort-alpha-asc') | |||||
| ->setHref($reorder_uri) | |||||
| ->setWorkflow(true) | |||||
| ->setDisabled(!$can_edit)); | |||||
| return $view; | return $view; | ||||
| } | } | ||||
| private function buildPropertyView( | private function buildPropertyView( | ||||
| PhabricatorEditEngineConfiguration $config) { | PhabricatorEditEngineConfiguration $config) { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $properties = id(new PHUIPropertyListView()) | $properties = id(new PHUIPropertyListView()) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setObject($config); | ->setObject($config); | ||||
| return $properties; | return $properties; | ||||
| } | } | ||||
| private function buildFieldList(PhabricatorEditEngineConfiguration $config) { | |||||
| $viewer = $this->getViewer(); | |||||
| $engine = $config->getEngine(); | |||||
| $fields = $engine->getFieldsForConfig($config); | |||||
| $form = id(new AphrontFormView()) | |||||
| ->setUser($viewer) | |||||
| ->setAction(null); | |||||
| foreach ($fields as $field) { | |||||
| $field->setIsPreview(true); | |||||
| $field->appendToForm($form); | |||||
| } | |||||
| $info = id(new PHUIInfoView()) | |||||
| ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) | |||||
| ->setErrors( | |||||
| array( | |||||
| pht('This is a preview of the current form configuration.'), | |||||
| )); | |||||
| $box = id(new PHUIObjectBoxView()) | |||||
| ->setHeaderText(pht('Form Preview')) | |||||
| ->setInfoView($info) | |||||
| ->setForm($form); | |||||
| return $box; | |||||
| } | |||||
| } | } | ||||