Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
4.6 kB · 169 lines
PHP
at commit 2f95330c
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170<?php
final class DiffusionCommitEditEngine extends PhabricatorEditEngine {
const ENGINECONST = 'diffusion.commit';
const ACTIONGROUP_AUDIT = 'audit'; const ACTIONGROUP_COMMIT = 'commit';
public function isEngineConfigurable() { return false; }
public function getEngineName() { return pht('Commits'); }
public function getSummaryHeader() { return pht('Edit Commits'); }
public function getSummaryText() { return pht('Edit commits.'); }
public function getEngineApplicationClass() { return 'PhabricatorDiffusionApplication'; }
protected function newEditableObject() { // NOTE: We must return a valid object here so that things like Conduit // documentation generation work. You can't actually create commits via // EditEngine. This is enforced with a "No One" creation policy.
$repository = new PhabricatorRepository(); $data = new PhabricatorRepositoryCommitData();
return id(new PhabricatorRepositoryCommit()) ->attachRepository($repository) ->attachCommitData($data) ->attachAudits(array()); }
protected function newObjectQuery() { $viewer = $this->getViewer();
return id(new DiffusionCommitQuery()) ->needCommitData(true) ->needAuditRequests(true) ->needAuditAuthority(array($viewer)) ->needIdentities(true); }
protected function getEditorURI() { return $this->getApplication()->getApplicationURI('commit/edit/'); }
protected function newCommentActionGroups() { return array( id(new PhabricatorEditEngineCommentActionGroup()) ->setKey(self::ACTIONGROUP_AUDIT) ->setLabel(pht('Audit Actions')), id(new PhabricatorEditEngineCommentActionGroup()) ->setKey(self::ACTIONGROUP_COMMIT) ->setLabel(pht('Commit Actions')), ); }
protected function getObjectCreateTitleText($object) { return pht('Create Commit'); }
protected function getObjectCreateShortText() { return pht('Create Commit'); }
protected function getObjectEditTitleText($object) { return pht('Edit Commit: %s', $object->getDisplayName()); }
protected function getObjectEditShortText($object) { return $object->getDisplayName(); }
protected function getObjectName() { return pht('Commit'); }
protected function getObjectViewURI($object) { return $object->getURI(); }
protected function getCreateNewObjectPolicy() { return PhabricatorPolicies::POLICY_NOONE; }
protected function buildCustomEditFields($object) { $viewer = $this->getViewer(); $data = $object->getCommitData();
$fields = array();
$fields[] = id(new PhabricatorDatasourceEditField()) ->setKey('auditors') ->setLabel(pht('Auditors')) ->setDatasource(new DiffusionAuditorDatasource()) ->setUseEdgeTransactions(true) ->setTransactionType( DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE) ->setCommentActionLabel(pht('Change Auditors')) ->setDescription(pht('Auditors for this commit.')) ->setConduitDescription(pht('Change the auditors for this commit.')) ->setConduitTypeDescription(pht('New auditors.')) ->setValue($object->getAuditorPHIDsForEdit());
$actions = DiffusionCommitActionTransaction::loadAllActions(); $actions = msortv($actions, 'getCommitActionOrderVector');
foreach ($actions as $key => $action) { $fields[] = $action->newEditField($object, $viewer); }
return $fields; }
protected function newAutomaticCommentTransactions($object) { $viewer = $this->getViewer();
$editor = $object->getApplicationTransactionEditor() ->setActor($viewer);
$xactions = $editor->newAutomaticInlineTransactions( $object, PhabricatorAuditActionConstants::INLINE, new DiffusionDiffInlineCommentQuery());
return $xactions; }
protected function newCommentPreviewContent($object, array $xactions) { $viewer = $this->getViewer(); $type_inline = PhabricatorAuditActionConstants::INLINE;
$inlines = array(); foreach ($xactions as $xaction) { if ($xaction->getTransactionType() === $type_inline) { $inlines[] = $xaction->getComment(); } }
$content = array();
if ($inlines) { $inline_preview = id(new PHUIDiffInlineCommentPreviewListView()) ->setViewer($viewer) ->setInlineComments($inlines);
$content[] = phutil_tag( 'div', array( 'id' => 'inline-comment-preview', ), $inline_preview); }
return $content; }}