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.
5.1 kB · 170 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171<?php
final class PhabricatorAuthMessageViewController extends PhabricatorAuthMessageController {
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer();
$this->requireApplicationCapability( AuthManageProvidersCapability::CAPABILITY);
// The "id" in the URI may either be an actual storage record ID (if a // message has already been created) or a message type key (for a message // type which does not have a record yet).
// This flow allows messages which have not been set yet to have a detail // page (so users can get detailed information about the message and see // any default value).
$id = $request->getURIData('id'); if (ctype_digit($id)) { $message = id(new PhabricatorAuthMessageQuery()) ->setViewer($viewer) ->withIDs(array($id)) ->executeOne(); if (!$message) { return new Aphront404Response(); } } else { $types = PhabricatorAuthMessageType::getAllMessageTypes(); if (!isset($types[$id])) { return new Aphront404Response(); }
// If this message type already has a storage record, redirect to the // canonical page for the record. $message = id(new PhabricatorAuthMessageQuery()) ->setViewer($viewer) ->withMessageKeys(array($id)) ->executeOne(); if ($message) { $message_uri = $message->getURI(); return id(new AphrontRedirectResponse())->setURI($message_uri); }
// Otherwise, create an empty placeholder message object with the // appropriate message type. $message = PhabricatorAuthMessage::initializeNewMessage($types[$id]); }
$crumbs = $this->buildApplicationCrumbs() ->addTextCrumb($message->getMessageType()->getDisplayName()) ->setBorder(true);
$header = $this->buildHeaderView($message); $properties = $this->buildPropertiesView($message); $curtain = $this->buildCurtain($message);
if ($message->getID()) { $timeline = $this->buildTransactionTimeline( $message, new PhabricatorAuthMessageTransactionQuery()); $timeline->setShouldTerminate(true); } else { $timeline = null; }
$view = id(new PHUITwoColumnView()) ->setHeader($header) ->setCurtain($curtain) ->setMainColumn( array( $timeline, )) ->addPropertySection(pht('Details'), $properties);
return $this->newPage() ->setTitle($message->getMessageTypeDisplayName()) ->setCrumbs($crumbs) ->setPageObjectPHIDs( array( $message->getPHID(), )) ->appendChild($view); }
private function buildHeaderView(PhabricatorAuthMessage $message) { $viewer = $this->getViewer();
$view = id(new PHUIHeaderView()) ->setViewer($viewer) ->setHeader($message->getMessageTypeDisplayName());
return $view; }
private function buildPropertiesView(PhabricatorAuthMessage $message) { $viewer = $this->getViewer();
$message_type = $message->getMessageType();
$view = id(new PHUIPropertyListView()) ->setViewer($viewer);
$full_description = $message_type->getFullDescription(); if (phutil_nonempty_string($full_description)) { $view->addTextContent(new PHUIRemarkupView($viewer, $full_description)); } else { $short_description = $message_type->getShortDescription(); $view->addProperty(pht('Description'), $short_description); }
$message_text = $message->getMessageText(); if (phutil_nonempty_string($message_text)) { $view->addSectionHeader( pht('Message Preview'), PHUIPropertyListView::ICON_SUMMARY);
$view->addTextContent(new PHUIRemarkupView($viewer, $message_text)); }
$default_text = $message_type->getDefaultMessageText(); if (phutil_nonempty_string($default_text)) { $view->addSectionHeader( pht('Default Message'), PHUIPropertyListView::ICON_SUMMARY);
$view->addTextContent(new PHUIRemarkupView($viewer, $default_text)); }
return $view; }
private function buildCurtain(PhabricatorAuthMessage $message) { $viewer = $this->getViewer(); $id = $message->getID();
$can_edit = PhabricatorPolicyFilter::hasCapability( $viewer, $message, PhabricatorPolicyCapability::CAN_EDIT);
if ($id) { $edit_uri = urisprintf('message/edit/%s/', $id); $edit_name = pht('Edit Message'); } else { $edit_uri = urisprintf('message/edit/'); $params = array( 'messageKey' => $message->getMessageKey(), ); $edit_uri = new PhutilURI($edit_uri, $params);
$edit_name = pht('Customize Message'); } $edit_uri = $this->getApplicationURI($edit_uri);
$curtain = $this->newCurtainView($message);
$curtain->addAction( id(new PhabricatorActionView()) ->setName($edit_name) ->setIcon('fa-pencil') ->setHref($edit_uri) ->setDisabled(!$can_edit) ->setWorkflow(!$can_edit));
return $curtain; }
}