protected function loadPage() { $table = new AlmanacBinding(); $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(AlmanacBinding $binding) { $viewer = $this->getViewer(); $id = $binding->getID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $binding, PhabricatorPolicyCapability::CAN_EDIT); $actions = id(new PhabricatorActionListView())->setUser($viewer); $actions->addAction(id(new PhabricatorActionView())->setIcon('fa-pencil')->setName(pht('Edit Binding'))->setHref($this->getApplicationURI("binding/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)); return $actions; }
private function buildPropertySection(AlmanacBinding $binding) { $viewer = $this->getViewer(); $properties = id(new PHUIPropertyListView())->setUser($viewer); $properties->addProperty(pht('Service'), $viewer->renderHandle($binding->getServicePHID())); $properties->addProperty(pht('Device'), $viewer->renderHandle($binding->getDevicePHID())); $properties->addProperty(pht('Network'), $viewer->renderHandle($binding->getInterface()->getNetworkPHID())); $properties->addProperty(pht('Interface'), $binding->getInterface()->renderDisplayAddress()); return $properties; }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); if ($id) { $binding = id(new AlmanacBindingQuery())->setViewer($viewer)->withIDs(array($id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$binding) { return new Aphront404Response(); } $service = $binding->getService(); $is_new = false; $service_uri = $service->getURI(); $cancel_uri = $binding->getURI(); $title = pht('Edit Binding'); $save_button = pht('Save Changes'); } else { $service = id(new AlmanacServiceQuery())->setViewer($viewer)->withIDs(array($request->getStr('serviceID')))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); $binding = AlmanacBinding::initializeNewBinding($service); $is_new = true; $service_uri = $service->getURI(); $cancel_uri = $service_uri; $title = pht('Create Binding'); $save_button = pht('Create Binding'); } $v_interface = array(); if ($binding->getInterfacePHID()) { $v_interface = array($binding->getInterfacePHID()); } $e_interface = true; $validation_exception = null; if ($request->isFormPost()) { $v_interface = $request->getArr('interfacePHIDs'); $type_interface = AlmanacBindingTransaction::TYPE_INTERFACE; $xactions = array(); $xactions[] = id(new AlmanacBindingTransaction())->setTransactionType($type_interface)->setNewValue(head($v_interface)); $editor = id(new AlmanacBindingEditor())->setActor($viewer)->setContentSourceFromRequest($request)->setContinueOnNoEffect(true); try { $editor->applyTransactions($binding, $xactions); $binding_uri = $binding->getURI(); return id(new AphrontRedirectResponse())->setURI($binding_uri); } catch (PhabricatorApplicationTransactionValidationException $ex) { $validation_exception = $ex; $e_interface = $ex->getShortMessage($type_interface); } } $form = id(new AphrontFormView())->setUser($viewer)->appendControl(id(new AphrontFormTokenizerControl())->setName('interfacePHIDs')->setLabel(pht('Interface'))->setLimit(1)->setDatasource(new AlmanacInterfaceDatasource())->setValue($v_interface)->setError($e_interface))->appendChild(id(new AphrontFormSubmitControl())->addCancelButton($cancel_uri)->setValue($save_button)); $box = id(new PHUIObjectBoxView())->setValidationException($validation_exception)->setHeaderText(pht('Binding'))->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->appendChild($form); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($service->getName(), $service_uri); if ($is_new) { $crumbs->addTextCrumb(pht('Create Binding')); $header = id(new PHUIHeaderView())->setHeader(pht('Create Binding'))->setHeaderIcon('fa-plus-square'); } else { $crumbs->addTextCrumb(pht('Edit Binding')); $header = id(new PHUIHeaderView())->setHeader(pht('Create Binding'))->setHeaderIcon('fa-pencil'); } $crumbs->setBorder(true); $view = id(new PHUITwoColumnView())->setHeader($header)->setFooter(array($box)); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($view); }
private function buildActionList(AlmanacBinding $binding) { $viewer = $this->getViewer(); $id = $binding->getID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $binding, PhabricatorPolicyCapability::CAN_EDIT); $actions = id(new PhabricatorActionListView())->setUser($viewer); $actions->addAction(id(new PhabricatorActionView())->setIcon('fa-pencil')->setName(pht('Edit Binding'))->setHref($this->getApplicationURI("binding/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)); if ($binding->getIsDisabled()) { $disable_icon = 'fa-check'; $disable_text = pht('Enable Binding'); } else { $disable_icon = 'fa-ban'; $disable_text = pht('Disable Binding'); } $disable_href = $this->getApplicationURI("binding/disable/{$id}/"); $actions->addAction(id(new PhabricatorActionView())->setIcon($disable_icon)->setName($disable_text)->setHref($disable_href)->setWorkflow(true)->setDisabled(!$can_edit)); return $actions; }
public function getClusterRepositoryURIFromBinding(AlmanacBinding $binding) { $protocol = $binding->getAlmanacPropertyValue('protocol'); if ($protocol === null) { $protocol = 'https'; } $iface = $binding->getInterface(); $address = $iface->renderDisplayAddress(); $path = $this->getURI(); return id(new PhutilURI("{$protocol}://{$address}"))->setPath($path); }
protected function getBindingDictionary(AlmanacBinding $binding) { return array('id' => (int) $binding->getID(), 'phid' => $binding->getPHID(), 'properties' => $this->getPropertiesDictionary($binding), 'interface' => $this->getInterfaceDictionary($binding->getInterface())); }
protected function getAlmanacBindingDictionary(AlmanacBinding $binding) { $interface = $binding->getInterface(); return array('id' => (int) $binding->getID(), 'phid' => $binding->getPHID(), 'properties' => $this->getAlmanacPropertyList($binding), 'interface' => $this->getAlmanacInterfaceDictionary($interface), 'disabled' => (bool) $binding->getIsDisabled()); }