Changeset View
Changeset View
Standalone View
Standalone View
src/applications/almanac/controller/AlmanacController.php
<?php | <?php | ||||
abstract class AlmanacController | abstract class AlmanacController | ||||
extends PhabricatorController { | extends PhabricatorController { | ||||
protected function buildAlmanacPropertiesTable( | protected function buildAlmanacPropertiesTable( | ||||
AlmanacPropertyInterface $object) { | AlmanacPropertyInterface $object) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$properties = $object->getAlmanacProperties(); | $properties = $object->getAlmanacProperties(); | ||||
$this->requireResource('almanac-css'); | $this->requireResource('almanac-css'); | ||||
Javelin::initBehavior('phabricator-tooltips', array()); | |||||
$can_edit = PhabricatorPolicyFilter::hasCapability( | $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
$viewer, | $viewer, | ||||
$object, | $object, | ||||
PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
$field_list = PhabricatorCustomField::getObjectFields( | $properties = $object->getAlmanacProperties(); | ||||
$object, | |||||
PhabricatorCustomField::ROLE_DEFAULT); | |||||
// Before reading values from the object, read defaults. | |||||
$defaults = mpull( | |||||
$field_list->getFields(), | |||||
'getValueForStorage', | |||||
'getFieldKey'); | |||||
$field_list | |||||
->setViewer($viewer) | |||||
->readFieldsFromStorage($object); | |||||
Javelin::initBehavior('phabricator-tooltips', array()); | |||||
$icon_builtin = id(new PHUIIconView()) | $icon_builtin = id(new PHUIIconView()) | ||||
->setIcon('fa-circle') | ->setIcon('fa-circle') | ||||
->addSigil('has-tooltip') | ->addSigil('has-tooltip') | ||||
->setMetadata( | ->setMetadata( | ||||
array( | array( | ||||
'tip' => pht('Builtin Property'), | 'tip' => pht('Builtin Property'), | ||||
'align' => 'E', | 'align' => 'E', | ||||
)); | )); | ||||
$icon_custom = id(new PHUIIconView()) | $icon_custom = id(new PHUIIconView()) | ||||
->setIcon('fa-circle-o grey') | ->setIcon('fa-circle-o grey') | ||||
->addSigil('has-tooltip') | ->addSigil('has-tooltip') | ||||
->setMetadata( | ->setMetadata( | ||||
array( | array( | ||||
'tip' => pht('Custom Property'), | 'tip' => pht('Custom Property'), | ||||
'align' => 'E', | 'align' => 'E', | ||||
)); | )); | ||||
$builtins = $object->getAlmanacPropertyFieldSpecifications(); | $builtins = $object->getAlmanacPropertyFieldSpecifications(); | ||||
$defaults = mpull($builtins, null, 'getValueForTransaction'); | |||||
// Sort fields so builtin fields appear first, then fields are ordered | // Sort fields so builtin fields appear first, then fields are ordered | ||||
// alphabetically. | // alphabetically. | ||||
$fields = $field_list->getFields(); | $properties = msort($properties, 'getFieldName'); | ||||
$fields = msort($fields, 'getFieldKey'); | |||||
$head = array(); | $head = array(); | ||||
$tail = array(); | $tail = array(); | ||||
foreach ($fields as $field) { | foreach ($properties as $property) { | ||||
$key = $field->getFieldKey(); | $key = $property->getFieldName(); | ||||
if (isset($builtins[$key])) { | if (isset($builtins[$key])) { | ||||
$head[$key] = $field; | $head[$key] = $property; | ||||
} else { | } else { | ||||
$tail[$key] = $field; | $tail[$key] = $property; | ||||
} | } | ||||
} | } | ||||
$fields = $head + $tail; | $properties = $head + $tail; | ||||
$delete_base = $this->getApplicationURI('property/delete/'); | |||||
$edit_base = $this->getApplicationURI('property/update/'); | |||||
$rows = array(); | $rows = array(); | ||||
foreach ($fields as $key => $field) { | foreach ($properties as $key => $property) { | ||||
$value = $field->getValueForStorage(); | $value = $property->getFieldValue(); | ||||
$is_builtin = isset($builtins[$key]); | $is_builtin = isset($builtins[$key]); | ||||
$delete_uri = $this->getApplicationURI('property/delete/'); | $delete_uri = id(new PhutilURI($delete_base)) | ||||
$delete_uri = id(new PhutilURI($delete_uri)) | |||||
->setQueryParams( | ->setQueryParams( | ||||
array( | array( | ||||
'objectPHID' => $object->getPHID(), | |||||
'key' => $key, | 'key' => $key, | ||||
'objectPHID' => $object->getPHID(), | |||||
)); | )); | ||||
$edit_uri = $this->getApplicationURI('property/edit/'); | $edit_uri = id(new PhutilURI($edit_base)) | ||||
$edit_uri = id(new PhutilURI($edit_uri)) | |||||
->setQueryParams( | ->setQueryParams( | ||||
array( | array( | ||||
'objectPHID' => $object->getPHID(), | |||||
'key' => $key, | 'key' => $key, | ||||
'objectPHID' => $object->getPHID(), | |||||
)); | )); | ||||
$delete = javelin_tag( | $delete = javelin_tag( | ||||
'a', | 'a', | ||||
array( | array( | ||||
'class' => ($can_edit | 'class' => ($can_edit | ||||
? 'button grey small' | ? 'button grey small' | ||||
: 'button grey small disabled'), | : 'button grey small disabled'), | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | $table = id(new AphrontTableView($rows)) | ||||
array( | array( | ||||
null, | null, | ||||
null, | null, | ||||
'wide', | 'wide', | ||||
'action', | 'action', | ||||
)); | )); | ||||
$phid = $object->getPHID(); | $phid = $object->getPHID(); | ||||
$add_uri = $this->getApplicationURI("property/edit/?objectPHID={$phid}"); | $add_uri = id(new PhutilURI($edit_base)) | ||||
->setQueryParam('objectPHID', $object->getPHID()); | |||||
$can_edit = PhabricatorPolicyFilter::hasCapability( | $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
$viewer, | $viewer, | ||||
$object, | $object, | ||||
PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
$add_button = id(new PHUIButtonView()) | $add_button = id(new PHUIButtonView()) | ||||
->setTag('a') | ->setTag('a') | ||||
Show All 26 Lines | $error_view = id(new PHUIInfoView()) | ||||
->setErrors( | ->setErrors( | ||||
array( | array( | ||||
array($message, ' ', $doc_link), | array($message, ' ', $doc_link), | ||||
)); | )); | ||||
$box->setInfoView($error_view); | $box->setInfoView($error_view); | ||||
} | } | ||||
protected function getPropertyDeleteURI($object) { | |||||
return null; | |||||
} | |||||
protected function getPropertyUpdateURI($object) { | |||||
return null; | |||||
} | |||||
} | } |