1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-28 17:52:43 +01:00
phorge-phorge/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentEditController.php

83 lines
2.4 KiB
PHP
Raw Normal View History

<?php
final class PhabricatorApplicationTransactionCommentEditController
extends PhabricatorApplicationTransactionController {
private $phid;
private $anchor;
public function willProcessRequest(array $data) {
$this->phid = $data['phid'];
$this->anchor = idx($data, 'anchor');
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$xactions = id(new PhabricatorObjectHandleData(array($this->phid)))
->setViewer($user)
->loadObjects();
$xaction = idx($xactions, $this->phid);
if (!$xaction) {
// TODO: This may also mean you don't have permission to edit the object,
// but we can't make that distinction via PhabricatorObjectHandleData
// at the moment.
return new Aphront404Response();
}
if (!$xaction->getComment()) {
// You can't currently edit a transaction which doesn't have a comment.
// Some day you may be able to edit the visibility.
return new Aphront404Response();
}
$obj_phid = $xaction->getObjectPHID();
$obj_handle = PhabricatorObjectHandleData::loadOneHandle($obj_phid, $user);
if (!$obj_handle) {
// Require the corresponding object exist and be visible to the user.
return new Aphront404Response();
}
if ($request->isDialogFormPost()) {
$text = $request->getStr('text');
$comment = $xaction->getApplicationTransactionCommentObject();
$comment->setContent($text);
if (!strlen($text)) {
$comment->setIsDeleted(true);
}
$editor = id(new PhabricatorApplicationTransactionCommentEditor())
->setActor($user)
->setContentSource(
$content_source = PhabricatorContentSource::newForSource(
PhabricatorContentSource::SOURCE_WEB,
array(
'ip' => $request->getRemoteAddr(),
)))
->applyEdit($xaction, $comment);
return id(new AphrontReloadResponse())->setURI($obj_handle->getURI());
}
$dialog = id(new AphrontDialogView())
->setUser($user)
->setTitle(pht('Edit Comment'));
$dialog
->appendChild(
id(new PhabricatorRemarkupControl())
->setName('text')
->setValue($xaction->getComment()->getContent()));
$dialog
->addSubmitButton(pht('Edit Comment'))
->addCancelButton($obj_handle->getURI());
return id(new AphrontDialogResponse())->setDialog($dialog);
}
}