Differential D8286 Diff 19727 src/applications/differential/customfield/DifferentialRepositoryField.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/customfield/DifferentialRepositoryField.php
- This file was added.
| <?php | |||||
| final class DifferentialRepositoryField | |||||
| extends DifferentialCoreCustomField { | |||||
| public function getFieldKey() { | |||||
| return 'differential:repository'; | |||||
| } | |||||
| public function getFieldName() { | |||||
| return pht('Repository'); | |||||
| } | |||||
| public function getFieldDescription() { | |||||
| return pht('Associates a revision with a repository.'); | |||||
| } | |||||
| protected function readValueFromRevision( | |||||
| DifferentialRevision $revision) { | |||||
| return $revision->getRepositoryPHID(); | |||||
| } | |||||
| protected function writeValueToRevision( | |||||
| DifferentialRevision $revision, | |||||
| $value) { | |||||
| $revision->setRepositoryPHID($value); | |||||
| } | |||||
| public function readValueFromRequest(AphrontRequest $request) { | |||||
| $phids = $request->getArr($this->getFieldKey()); | |||||
| $first = head($phids); | |||||
| $this->setValue(coalesce($first, null)); | |||||
| } | |||||
| public function getRequiredHandlePHIDsForEdit() { | |||||
| $phids = array(); | |||||
| if ($this->getValue()) { | |||||
| $phids[] = $this->getValue(); | |||||
| } | |||||
| return $phids; | |||||
| } | |||||
| public function renderEditControl(array $handles) { | |||||
| if ($this->getValue()) { | |||||
| $control_value = array_select_keys($handles, array($this->getValue())); | |||||
| } else { | |||||
| $control_value = array(); | |||||
| } | |||||
| return id(new AphrontFormTokenizerControl()) | |||||
| ->setName($this->getFieldKey()) | |||||
| ->setDatasource('/typeahead/common/repositories/') | |||||
| ->setValue($control_value) | |||||
| ->setError($this->getFieldError()) | |||||
| ->setLabel($this->getFieldName()) | |||||
| ->setLimit(1); | |||||
| } | |||||
| public function getApplicationTransactionRequiredHandlePHIDs( | |||||
| PhabricatorApplicationTransaction $xaction) { | |||||
| $old = $xaction->getOldValue(); | |||||
| $new = $xaction->getNewValue(); | |||||
| $phids = array(); | |||||
| if ($old) { | |||||
| $phids[] = $old; | |||||
| } | |||||
| if ($new) { | |||||
| $phids[] = $new; | |||||
| } | |||||
| return $phids; | |||||
| } | |||||
| public function getApplicationTransactionTitle( | |||||
| PhabricatorApplicationTransaction $xaction) { | |||||
| $author_phid = $xaction->getAuthorPHID(); | |||||
| $old = $xaction->getOldValue(); | |||||
| $new = $xaction->getNewValue(); | |||||
| if ($old && $new) { | |||||
| return pht( | |||||
| '%s changed the repository for this revision from %s to %s.', | |||||
| $xaction->renderHandleLink($author_phid), | |||||
| $xaction->renderHandleLink($old), | |||||
| $xaction->renderHandleLink($new)); | |||||
| } else if ($new) { | |||||
| return pht( | |||||
| '%s set the repository for this revision to %s.', | |||||
| $xaction->renderHandleLink($author_phid), | |||||
| $xaction->renderHandleLink($new)); | |||||
| } else { | |||||
| return pht( | |||||
| '%s removed %s as the repository for this revision.', | |||||
| $xaction->renderHandleLink($author_phid), | |||||
| $xaction->renderHandleLink($old)); | |||||
| } | |||||
| } | |||||
| public function getApplicationTransactionTitleForFeed( | |||||
| PhabricatorApplicationTransaction $xaction, | |||||
| PhabricatorFeedStory $story) { | |||||
| $object_phid = $xaction->getObjectPHID(); | |||||
| $author_phid = $xaction->getAuthorPHID(); | |||||
| $old = $xaction->getOldValue(); | |||||
| $new = $xaction->getNewValue(); | |||||
| if ($old) { | |||||
| return pht( | |||||
| '%s updated the repository for %s from %s to %s.', | |||||
| $xaction->renderHandleLink($author_phid), | |||||
| $xaction->renderHandleLink($object_phid), | |||||
| $xaction->renderHandleLink($old), | |||||
| $xaction->renderHandleLink($new)); | |||||
| } else { | |||||
| return pht( | |||||
| '%s set the repository for %s to %s.', | |||||
| $xaction->renderHandleLink($author_phid), | |||||
| $xaction->renderHandleLink($object_phid), | |||||
| $xaction->renderHandleLink($new)); | |||||
| } | |||||
| } | |||||
| } | |||||