Path: blob/master/src/applications/diffusion/editor/DiffusionCommitEditEngine.php
12242 views
<?php12final class DiffusionCommitEditEngine3extends PhabricatorEditEngine {45const ENGINECONST = 'diffusion.commit';67const ACTIONGROUP_AUDIT = 'audit';8const ACTIONGROUP_COMMIT = 'commit';910public function isEngineConfigurable() {11return false;12}1314public function getEngineName() {15return pht('Commits');16}1718public function getSummaryHeader() {19return pht('Edit Commits');20}2122public function getSummaryText() {23return pht('Edit commits.');24}2526public function getEngineApplicationClass() {27return 'PhabricatorDiffusionApplication';28}2930protected function newEditableObject() {31// NOTE: We must return a valid object here so that things like Conduit32// documentation generation work. You can't actually create commits via33// EditEngine. This is enforced with a "No One" creation policy.3435$repository = new PhabricatorRepository();36$data = new PhabricatorRepositoryCommitData();3738return id(new PhabricatorRepositoryCommit())39->attachRepository($repository)40->attachCommitData($data)41->attachAudits(array());42}4344protected function newObjectQuery() {45$viewer = $this->getViewer();4647return id(new DiffusionCommitQuery())48->needCommitData(true)49->needAuditRequests(true)50->needAuditAuthority(array($viewer))51->needIdentities(true);52}5354protected function getEditorURI() {55return $this->getApplication()->getApplicationURI('commit/edit/');56}5758protected function newCommentActionGroups() {59return array(60id(new PhabricatorEditEngineCommentActionGroup())61->setKey(self::ACTIONGROUP_AUDIT)62->setLabel(pht('Audit Actions')),63id(new PhabricatorEditEngineCommentActionGroup())64->setKey(self::ACTIONGROUP_COMMIT)65->setLabel(pht('Commit Actions')),66);67}6869protected function getObjectCreateTitleText($object) {70return pht('Create Commit');71}7273protected function getObjectCreateShortText() {74return pht('Create Commit');75}7677protected function getObjectEditTitleText($object) {78return pht('Edit Commit: %s', $object->getDisplayName());79}8081protected function getObjectEditShortText($object) {82return $object->getDisplayName();83}8485protected function getObjectName() {86return pht('Commit');87}8889protected function getObjectViewURI($object) {90return $object->getURI();91}9293protected function getCreateNewObjectPolicy() {94return PhabricatorPolicies::POLICY_NOONE;95}9697protected function buildCustomEditFields($object) {98$viewer = $this->getViewer();99$data = $object->getCommitData();100101$fields = array();102103$fields[] = id(new PhabricatorDatasourceEditField())104->setKey('auditors')105->setLabel(pht('Auditors'))106->setDatasource(new DiffusionAuditorDatasource())107->setUseEdgeTransactions(true)108->setTransactionType(109DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE)110->setCommentActionLabel(pht('Change Auditors'))111->setDescription(pht('Auditors for this commit.'))112->setConduitDescription(pht('Change the auditors for this commit.'))113->setConduitTypeDescription(pht('New auditors.'))114->setValue($object->getAuditorPHIDsForEdit());115116$actions = DiffusionCommitActionTransaction::loadAllActions();117$actions = msortv($actions, 'getCommitActionOrderVector');118119foreach ($actions as $key => $action) {120$fields[] = $action->newEditField($object, $viewer);121}122123return $fields;124}125126protected function newAutomaticCommentTransactions($object) {127$viewer = $this->getViewer();128129$editor = $object->getApplicationTransactionEditor()130->setActor($viewer);131132$xactions = $editor->newAutomaticInlineTransactions(133$object,134PhabricatorAuditActionConstants::INLINE,135new DiffusionDiffInlineCommentQuery());136137return $xactions;138}139140protected function newCommentPreviewContent($object, array $xactions) {141$viewer = $this->getViewer();142$type_inline = PhabricatorAuditActionConstants::INLINE;143144$inlines = array();145foreach ($xactions as $xaction) {146if ($xaction->getTransactionType() === $type_inline) {147$inlines[] = $xaction->getComment();148}149}150151$content = array();152153if ($inlines) {154$inline_preview = id(new PHUIDiffInlineCommentPreviewListView())155->setViewer($viewer)156->setInlineComments($inlines);157158$content[] = phutil_tag(159'div',160array(161'id' => 'inline-comment-preview',162),163$inline_preview);164}165166return $content;167}168}169170171