Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15341085
D20664.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
D20664.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D20664: Give "Auth Messages" a view/detail state before users customize them
Attached
Detach File
Event Timeline
Log In to Comment