Exemplo n.º 1
0
 protected function loadPage()
 {
     $table = new AlmanacNetwork();
     $conn_r = $table->establishConnection('r');
     $data = queryfx_all($conn_r, 'SELECT * FROM %T %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r));
     return $table->loadAllFromArray($data);
 }
 private function buildActionList(AlmanacNetwork $network)
 {
     $viewer = $this->getViewer();
     $id = $network->getID();
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $network, PhabricatorPolicyCapability::CAN_EDIT);
     $actions = id(new PhabricatorActionListView())->setUser($viewer);
     $actions->addAction(id(new PhabricatorActionView())->setIcon('fa-pencil')->setName(pht('Edit Network'))->setHref($this->getApplicationURI("network/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit));
     return $actions;
 }
 public function handleRequest(AphrontRequest $request)
 {
     $viewer = $request->getViewer();
     $list_uri = $this->getApplicationURI('network/');
     $id = $request->getURIData('id');
     if ($id) {
         $network = id(new AlmanacNetworkQuery())->setViewer($viewer)->withIDs(array($id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne();
         if (!$network) {
             return new Aphront404Response();
         }
         $is_new = false;
         $network_uri = $this->getApplicationURI('network/' . $network->getID() . '/');
         $cancel_uri = $network_uri;
         $title = pht('Edit Network');
         $save_button = pht('Save Changes');
     } else {
         $this->requireApplicationCapability(AlmanacCreateNetworksCapability::CAPABILITY);
         $network = AlmanacNetwork::initializeNewNetwork();
         $is_new = true;
         $cancel_uri = $list_uri;
         $title = pht('Create Network');
         $save_button = pht('Create Network');
     }
     $v_name = $network->getName();
     $e_name = true;
     $validation_exception = null;
     if ($request->isFormPost()) {
         $v_name = $request->getStr('name');
         $v_view = $request->getStr('viewPolicy');
         $v_edit = $request->getStr('editPolicy');
         $type_name = AlmanacNetworkTransaction::TYPE_NAME;
         $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
         $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
         $xactions = array();
         $xactions[] = id(new AlmanacNetworkTransaction())->setTransactionType($type_name)->setNewValue($v_name);
         $xactions[] = id(new AlmanacNetworkTransaction())->setTransactionType($type_view)->setNewValue($v_view);
         $xactions[] = id(new AlmanacNetworkTransaction())->setTransactionType($type_edit)->setNewValue($v_edit);
         $editor = id(new AlmanacNetworkEditor())->setActor($viewer)->setContentSourceFromRequest($request)->setContinueOnNoEffect(true);
         try {
             $editor->applyTransactions($network, $xactions);
             $id = $network->getID();
             $network_uri = $this->getApplicationURI("network/{$id}/");
             return id(new AphrontRedirectResponse())->setURI($network_uri);
         } catch (PhabricatorApplicationTransactionValidationException $ex) {
             $validation_exception = $ex;
             $e_name = $ex->getShortMessage($type_name);
             $network->setViewPolicy($v_view);
             $network->setEditPolicy($v_edit);
         }
     }
     $policies = id(new PhabricatorPolicyQuery())->setViewer($viewer)->setObject($network)->execute();
     $form = id(new AphrontFormView())->setUser($viewer)->appendChild(id(new AphrontFormTextControl())->setLabel(pht('Name'))->setName('name')->setValue($v_name)->setError($e_name))->appendChild(id(new AphrontFormPolicyControl())->setName('viewPolicy')->setPolicyObject($network)->setCapability(PhabricatorPolicyCapability::CAN_VIEW)->setPolicies($policies))->appendChild(id(new AphrontFormPolicyControl())->setName('editPolicy')->setPolicyObject($network)->setCapability(PhabricatorPolicyCapability::CAN_EDIT)->setPolicies($policies))->appendChild(id(new AphrontFormSubmitControl())->addCancelButton($cancel_uri)->setValue($save_button));
     $box = id(new PHUIObjectBoxView())->setValidationException($validation_exception)->setHeaderText($title)->setForm($form);
     $crumbs = $this->buildApplicationCrumbs();
     if ($is_new) {
         $crumbs->addTextCrumb(pht('Create Network'));
     } else {
         $crumbs->addTextCrumb($network->getName(), $network_uri);
         $crumbs->addTextCrumb(pht('Edit'));
     }
     return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild(array($box));
 }
 protected function newEditableObject()
 {
     return AlmanacNetwork::initializeNewNetwork();
 }
 protected function getNetworkDictionary(AlmanacNetwork $network)
 {
     return array('id' => (int) $network->getID(), 'phid' => $network->getPHID(), 'name' => $network->getName());
 }