private function buildBindingList(AlmanacService $service)
 {
     $viewer = $this->getViewer();
     $id = $service->getID();
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $service, PhabricatorPolicyCapability::CAN_EDIT);
     $bindings = id(new AlmanacBindingQuery())->setViewer($viewer)->withServicePHIDs(array($service->getPHID()))->execute();
     $table = id(new AlmanacBindingTableView())->setNoDataString(pht('This service has not been bound to any device interfaces yet.'))->setUser($viewer)->setBindings($bindings);
     $header = id(new PHUIHeaderView())->setHeader(pht('Service Bindings'))->addActionLink(id(new PHUIButtonView())->setTag('a')->setHref($this->getApplicationURI("binding/edit/?serviceID={$id}"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)->setText(pht('Add Binding'))->setIcon('fa-plus'));
     return id(new PHUIObjectBoxView())->setHeader($header)->setTable($table);
 }
 protected function getServiceDictionary(AlmanacService $service)
 {
     return array('id' => (int) $service->getID(), 'phid' => $service->getPHID(), 'name' => $service->getName(), 'uri' => PhabricatorEnv::getProductionURI($service->getURI()), 'serviceClass' => $service->getServiceClass(), 'properties' => $this->getPropertiesDictionary($service));
 }