From 3958bf36776797e9c851062d9fd65a41b4920c50 Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 5 Sep 2014 12:26:58 -0700 Subject: [PATCH] Make it easier to ignore setup issues Summary: Ref T4331. Ref T5968. Users sometimes have trouble figuring out how to ignore issues. The option is a bit hard to spot, especially if you aren't familiar with interfaces yet. Make it a button on the issue page itself instead. Test Plan: Normal issue: {F199225} Ignored issue: {F199226} Fatal issue: {F199227} Reviewers: btrahan, chad Reviewed By: chad Subscribers: epriestley Maniphest Tasks: T4331, T5968 Differential Revision: https://secure.phabricator.com/D10420 --- resources/celerity/map.php | 4 +- .../check/PhabricatorSetupCheckDaemons.php | 2 +- .../PhabricatorConfigIgnoreController.php | 2 +- .../PhabricatorConfigIssueListController.php | 14 +--- .../config/view/PhabricatorSetupIssueView.php | 84 +++++++++++++++++-- .../css/application/config/setup-issue.css | 20 ++++- 6 files changed, 100 insertions(+), 26 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 51371f2157..daa8cc4d8a 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -44,7 +44,7 @@ return array( 'rsrc/css/application/config/config-options.css' => '7fedf08b', 'rsrc/css/application/config/config-template.css' => '25d446d6', 'rsrc/css/application/config/config-welcome.css' => 'b0d16200', - 'rsrc/css/application/config/setup-issue.css' => '69e640e7', + 'rsrc/css/application/config/setup-issue.css' => '8f852bc0', 'rsrc/css/application/conpherence/menu.css' => 'e1e0fdf1', 'rsrc/css/application/conpherence/message-pane.css' => '11a393ca', 'rsrc/css/application/conpherence/notification.css' => '04a6e10a', @@ -811,7 +811,7 @@ return array( 'releeph-preview-branch' => 'b7a6f4a5', 'releeph-request-differential-create-dialog' => '8d8b92cd', 'releeph-request-typeahead-css' => '667a48ae', - 'setup-issue-css' => '69e640e7', + 'setup-issue-css' => '8f852bc0', 'sprite-apps-css' => 'd5baed0f', 'sprite-apps-large-css' => '20ec0cc0', 'sprite-conpherence-css' => '3b4a0487', diff --git a/src/applications/config/check/PhabricatorSetupCheckDaemons.php b/src/applications/config/check/PhabricatorSetupCheckDaemons.php index 9e02ac4ed9..a77f32910f 100644 --- a/src/applications/config/check/PhabricatorSetupCheckDaemons.php +++ b/src/applications/config/check/PhabricatorSetupCheckDaemons.php @@ -23,7 +23,7 @@ final class PhabricatorSetupCheckDaemons extends PhabricatorSetupCheck { 'The Phabricator daemons are not running, so Phabricator will not '. 'be able to perform background processing (including sending email, '. 'rebuilding search indexes, importing commits, cleaning up old data, '. - 'running builds, etc.).'. + 'and running builds).'. "\n\n". 'Use %s to start daemons. See %s for more information.', phutil_tag('tt', array(), 'bin/phd start'), diff --git a/src/applications/config/controller/PhabricatorConfigIgnoreController.php b/src/applications/config/controller/PhabricatorConfigIgnoreController.php index 2a6fe1886c..3261482aa6 100644 --- a/src/applications/config/controller/PhabricatorConfigIgnoreController.php +++ b/src/applications/config/controller/PhabricatorConfigIgnoreController.php @@ -13,7 +13,7 @@ final class PhabricatorConfigIgnoreController public function processRequest() { $request = $this->getRequest(); - $issue_uri = $this->getApplicationURI('issue'); + $issue_uri = $this->getApplicationURI('issue/'.$this->issue.'/'); if ($request->isDialogFormPost()) { $this->manageApplication(); diff --git a/src/applications/config/controller/PhabricatorConfigIssueListController.php b/src/applications/config/controller/PhabricatorConfigIssueListController.php index 4abdfb81ca..99bb4d8ff7 100644 --- a/src/applications/config/controller/PhabricatorConfigIssueListController.php +++ b/src/applications/config/controller/PhabricatorConfigIssueListController.php @@ -55,22 +55,10 @@ final class PhabricatorConfigIssueListController ->addAttribute($issue->getSummary()); if (!$issue->getIsIgnored()) { $item->setBarColor('yellow'); - $item->addAction( - id(new PHUIListItemView()) - ->setIcon('fa-eye-slash') - ->setWorkflow(true) - ->setName(pht('Ignore')) - ->setHref('/config/ignore/'.$issue->getIssueKey().'/')); $list->addItem($item); } else { - $item->addIcon('none', pht('Ignored')); + $item->addIcon('fa-eye-slash', pht('Ignored')); $item->setDisabled(true); - $item->addAction( - id(new PHUIListItemView()) - ->setIcon('fa-eye') - ->setWorkflow(true) - ->setName(pht('Unignore')) - ->setHref('/config/unignore/'.$issue->getIssueKey().'/')); $item->setBarColor('none'); $ignored_items[] = $item; } diff --git a/src/applications/config/view/PhabricatorSetupIssueView.php b/src/applications/config/view/PhabricatorSetupIssueView.php index bdf7562cfd..0fd04fa748 100644 --- a/src/applications/config/view/PhabricatorSetupIssueView.php +++ b/src/applications/config/view/PhabricatorSetupIssueView.php @@ -107,12 +107,66 @@ final class PhabricatorSetupIssueView extends AphrontView { } - $next = phutil_tag( - 'div', - array( - 'class' => 'setup-issue-next', - ), - pht('To continue, resolve this problem and reload the page.')); + $actions = array(); + if (!$issue->getIsFatal()) { + if ($issue->getIsIgnored()) { + $actions[] = javelin_tag( + 'a', + array( + 'href' => '/config/unignore/'.$issue->getIssueKey().'/', + 'sigil' => 'workflow', + 'class' => 'button grey', + ), + pht('Unignore Setup Issue')); + } else { + $actions[] = javelin_tag( + 'a', + array( + 'href' => '/config/ignore/'.$issue->getIssueKey().'/', + 'sigil' => 'workflow', + 'class' => 'button grey', + ), + pht('Ignore Setup Issue')); + } + + $actions[] = javelin_tag( + 'a', + array( + 'href' => '/config/issue/'.$issue->getIssueKey().'/', + 'class' => 'button grey', + 'style' => 'float: right', + ), + pht('Reload Page')); + } + + if ($actions) { + $actions = phutil_tag( + 'div', + array( + 'class' => 'setup-issue-actions', + ), + $actions); + } + + if ($issue->getIsIgnored()) { + $status = phutil_tag( + 'div', + array( + 'class' => 'setup-issue-status', + ), + pht( + 'This issue is currently ignored, and does not show a global '. + 'warning.')); + $next = null; + } else { + $status = null; + $next = phutil_tag( + 'div', + array( + 'class' => 'setup-issue-next', + ), + pht('To continue, resolve this problem and reload the page.')); + } $name = phutil_tag( 'div', @@ -121,15 +175,29 @@ final class PhabricatorSetupIssueView extends AphrontView { ), $issue->getName()); + $head = phutil_tag( + 'div', + array( + 'class' => 'setup-issue-head', + ), + array($name, $status)); + + $tail = phutil_tag( + 'div', + array( + 'class' => 'setup-issue-tail', + ), + array($actions, $next)); + $issue = phutil_tag( 'div', array( 'class' => 'setup-issue', ), array( - $name, + $head, $description, - $next, + $tail, )); $debug_info = phutil_tag( diff --git a/webroot/rsrc/css/application/config/setup-issue.css b/webroot/rsrc/css/application/config/setup-issue.css index af41de4cfb..f237e3c8b9 100644 --- a/webroot/rsrc/css/application/config/setup-issue.css +++ b/webroot/rsrc/css/application/config/setup-issue.css @@ -87,6 +87,25 @@ background-repeat: repeat-x; } +.setup-issue-tail { + margin-top: 12px; +} + +.setup-issue-status { + padding: 12px; + background: #f3f3f3; + color: #666666; + border-bottom: 1px solid #dfdfdf; + font-style: italic; +} + +.setup-issue-actions { + padding: 12px; + background: #f3f3f3; + border-top: 1px solid #dfdfdf; + overflow: hidden; +} + .setup-issue-next { padding: 12px; border-top: 1px solid #BFCFDA; @@ -94,7 +113,6 @@ text-align: center; font-size: 15px; color: #2980b9; - margin-top: 12px; } .setup-issue-config {