Page MenuHomePhabricator

D20664.diff
No OneTemporary

D20664.diff

diff --git a/src/applications/auth/application/PhabricatorAuthApplication.php b/src/applications/auth/application/PhabricatorAuthApplication.php
--- a/src/applications/auth/application/PhabricatorAuthApplication.php
+++ b/src/applications/auth/application/PhabricatorAuthApplication.php
@@ -108,7 +108,7 @@
'PhabricatorAuthMessageListController',
$this->getEditRoutePattern('edit/') =>
'PhabricatorAuthMessageEditController',
- '(?P<id>[1-9]\d*)/' =>
+ '(?P<id>[^/]+)/' =>
'PhabricatorAuthMessageViewController',
),
diff --git a/src/applications/auth/controller/message/PhabricatorAuthMessageListController.php b/src/applications/auth/controller/message/PhabricatorAuthMessageListController.php
--- a/src/applications/auth/controller/message/PhabricatorAuthMessageListController.php
+++ b/src/applications/auth/controller/message/PhabricatorAuthMessageListController.php
@@ -19,11 +19,14 @@
$list = new PHUIObjectItemListView();
foreach ($types as $type) {
$message = idx($messages, $type->getMessageTypeKey());
+
if ($message) {
$href = $message->getURI();
$name = $message->getMessageTypeDisplayName();
} else {
- $href = '/auth/message/edit/?messageKey='.$type->getMessageTypeKey();
+ $href = urisprintf(
+ '/auth/message/%s/',
+ $type->getMessageTypeKey());
$name = $type->getDisplayName();
}
diff --git a/src/applications/auth/controller/message/PhabricatorAuthMessageViewController.php b/src/applications/auth/controller/message/PhabricatorAuthMessageViewController.php
--- a/src/applications/auth/controller/message/PhabricatorAuthMessageViewController.php
+++ b/src/applications/auth/controller/message/PhabricatorAuthMessageViewController.php
@@ -9,26 +9,61 @@
$this->requireApplicationCapability(
AuthManageProvidersCapability::CAPABILITY);
- $message = id(new PhabricatorAuthMessageQuery())
- ->setViewer($viewer)
- ->withIDs(array($request->getURIData('id')))
- ->executeOne();
- if (!$message) {
- return new Aphront404Response();
+ // 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->getObjectName())
+ ->addTextCrumb($message->getMessageType()->getDisplayName())
->setBorder(true);
$header = $this->buildHeaderView($message);
$properties = $this->buildPropertiesView($message);
$curtain = $this->buildCurtain($message);
- $timeline = $this->buildTransactionTimeline(
- $message,
- new PhabricatorAuthMessageTransactionQuery());
- $timeline->setShouldTerminate(true);
+ if ($message->getID()) {
+ $timeline = $this->buildTransactionTimeline(
+ $message,
+ new PhabricatorAuthMessageTransactionQuery());
+ $timeline->setShouldTerminate(true);
+ } else {
+ $timeline = null;
+ }
$view = id(new PHUITwoColumnView())
->setHeader($header)
@@ -69,12 +104,14 @@
pht('Description'),
$message->getMessageType()->getShortDescription());
- $view->addSectionHeader(
- pht('Message Preview'),
- PHUIPropertyListView::ICON_SUMMARY);
+ if (strlen($message->getMessageText())) {
+ $view->addSectionHeader(
+ pht('Message Preview'),
+ PHUIPropertyListView::ICON_SUMMARY);
- $view->addTextContent(
- new PHUIRemarkupView($viewer, $message->getMessageText()));
+ $view->addTextContent(
+ new PHUIRemarkupView($viewer, $message->getMessageText()));
+ }
return $view;
}
@@ -88,13 +125,27 @@
$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(pht('Edit Message'))
+ ->setName($edit_name)
->setIcon('fa-pencil')
- ->setHref($this->getApplicationURI("message/edit/{$id}/"))
+ ->setHref($edit_uri)
->setDisabled(!$can_edit)
->setWorkflow(!$can_edit));

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 6:34 PM (2 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7463717
Default Alt Text
D20664.diff (5 KB)

Event Timeline