From b6df427c2f6d8d354defd8f1e96f3af53080ae2f Mon Sep 17 00:00:00 2001
From: epriestley <git@epriestley.com>
Date: Fri, 12 Jul 2013 11:31:20 -0700
Subject: [PATCH] Add a "disabled" style

Summary: Fixes T3525. This feels way better, although it's still a little hard for me to pick out of lists with otherwise default-colored items.

Test Plan: {F49910} {F49911}

Reviewers: chad

Reviewed By: chad

CC: aran

Maniphest Tasks: T3525

Differential Revision: https://secure.phabricator.com/D6435
---
 src/__celerity_resource_map__.php             | 90 +++++++++----------
 .../PhabricatorConfigIssueListController.php  |  1 +
 ...PhabricatorApplicationSearchController.php |  2 +-
 .../PhabricatorObjectItemListExample.php      | 13 +++
 ...PhabricatorCustomFieldConfigOptionType.php |  1 +
 src/view/layout/PhabricatorObjectItemView.php | 14 +++
 .../phabricator-object-item-list-view.css     | 18 ++++
 7 files changed, 93 insertions(+), 46 deletions(-)

diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
index a5d5c30144..a686265085 100644
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -3334,7 +3334,7 @@ celerity_register_resource_map(array(
   ),
   'phabricator-object-item-list-view-css' =>
   array(
-    'uri' => '/res/fa3c7eb1/rsrc/css/layout/phabricator-object-item-list-view.css',
+    'uri' => '/res/a3e45d8a/rsrc/css/layout/phabricator-object-item-list-view.css',
     'type' => 'css',
     'requires' =>
     array(
@@ -4149,7 +4149,7 @@ celerity_register_resource_map(array(
 ), array(
   'packages' =>
   array(
-    '6e2d527c' =>
+    'c01cebae' =>
     array(
       'name' => 'core.pkg.css',
       'symbols' =>
@@ -4197,7 +4197,7 @@ celerity_register_resource_map(array(
         40 => 'phabricator-property-list-view-css',
         41 => 'phabricator-tag-view-css',
       ),
-      'uri' => '/res/pkg/6e2d527c/core.pkg.css',
+      'uri' => '/res/pkg/c01cebae/core.pkg.css',
       'type' => 'css',
     ),
     '75ccea43' =>
@@ -4391,16 +4391,16 @@ celerity_register_resource_map(array(
   'reverse' =>
   array(
     'aphront-attached-file-view-css' => 'adc3c36d',
-    'aphront-dialog-view-css' => '6e2d527c',
-    'aphront-error-view-css' => '6e2d527c',
-    'aphront-form-view-css' => '6e2d527c',
-    'aphront-list-filter-view-css' => '6e2d527c',
-    'aphront-pager-view-css' => '6e2d527c',
-    'aphront-panel-view-css' => '6e2d527c',
-    'aphront-table-view-css' => '6e2d527c',
-    'aphront-tokenizer-control-css' => '6e2d527c',
-    'aphront-tooltip-css' => '6e2d527c',
-    'aphront-typeahead-control-css' => '6e2d527c',
+    'aphront-dialog-view-css' => 'c01cebae',
+    'aphront-error-view-css' => 'c01cebae',
+    'aphront-form-view-css' => 'c01cebae',
+    'aphront-list-filter-view-css' => 'c01cebae',
+    'aphront-pager-view-css' => 'c01cebae',
+    'aphront-panel-view-css' => 'c01cebae',
+    'aphront-table-view-css' => 'c01cebae',
+    'aphront-tokenizer-control-css' => 'c01cebae',
+    'aphront-tooltip-css' => 'c01cebae',
+    'aphront-typeahead-control-css' => 'c01cebae',
     'differential-changeset-view-css' => 'dd27a69b',
     'differential-core-view-css' => 'dd27a69b',
     'differential-inline-comment-editor' => '504ca7d2',
@@ -4414,7 +4414,7 @@ celerity_register_resource_map(array(
     'differential-table-of-contents-css' => 'dd27a69b',
     'diffusion-commit-view-css' => 'c8ce2d88',
     'diffusion-icons-css' => 'c8ce2d88',
-    'global-drag-and-drop-css' => '6e2d527c',
+    'global-drag-and-drop-css' => 'c01cebae',
     'inline-comment-summary-css' => 'dd27a69b',
     'javelin-aphlict' => '75ccea43',
     'javelin-behavior' => 'a9f14d76',
@@ -4488,55 +4488,55 @@ celerity_register_resource_map(array(
     'javelin-util' => 'a9f14d76',
     'javelin-vector' => 'a9f14d76',
     'javelin-workflow' => 'a9f14d76',
-    'lightbox-attachment-css' => '6e2d527c',
+    'lightbox-attachment-css' => 'c01cebae',
     'maniphest-task-summary-css' => 'adc3c36d',
     'maniphest-transaction-detail-css' => 'adc3c36d',
-    'phabricator-action-list-view-css' => '6e2d527c',
-    'phabricator-application-launch-view-css' => '6e2d527c',
+    'phabricator-action-list-view-css' => 'c01cebae',
+    'phabricator-application-launch-view-css' => 'c01cebae',
     'phabricator-busy' => '75ccea43',
     'phabricator-content-source-view-css' => 'dd27a69b',
-    'phabricator-core-css' => '6e2d527c',
-    'phabricator-crumbs-view-css' => '6e2d527c',
+    'phabricator-core-css' => 'c01cebae',
+    'phabricator-crumbs-view-css' => 'c01cebae',
     'phabricator-drag-and-drop-file-upload' => '504ca7d2',
     'phabricator-dropdown-menu' => '75ccea43',
     'phabricator-file-upload' => '75ccea43',
-    'phabricator-filetree-view-css' => '6e2d527c',
-    'phabricator-flag-css' => '6e2d527c',
-    'phabricator-form-view-css' => '6e2d527c',
-    'phabricator-header-view-css' => '6e2d527c',
+    'phabricator-filetree-view-css' => 'c01cebae',
+    'phabricator-flag-css' => 'c01cebae',
+    'phabricator-form-view-css' => 'c01cebae',
+    'phabricator-header-view-css' => 'c01cebae',
     'phabricator-hovercard' => '75ccea43',
-    'phabricator-jump-nav' => '6e2d527c',
+    'phabricator-jump-nav' => 'c01cebae',
     'phabricator-keyboard-shortcut' => '75ccea43',
     'phabricator-keyboard-shortcut-manager' => '75ccea43',
-    'phabricator-main-menu-view' => '6e2d527c',
+    'phabricator-main-menu-view' => 'c01cebae',
     'phabricator-menu-item' => '75ccea43',
-    'phabricator-nav-view-css' => '6e2d527c',
+    'phabricator-nav-view-css' => 'c01cebae',
     'phabricator-notification' => '75ccea43',
-    'phabricator-notification-css' => '6e2d527c',
-    'phabricator-notification-menu-css' => '6e2d527c',
-    'phabricator-object-item-list-view-css' => '6e2d527c',
+    'phabricator-notification-css' => 'c01cebae',
+    'phabricator-notification-menu-css' => 'c01cebae',
+    'phabricator-object-item-list-view-css' => 'c01cebae',
     'phabricator-object-selector-css' => 'dd27a69b',
     'phabricator-phtize' => '75ccea43',
     'phabricator-prefab' => '75ccea43',
     'phabricator-project-tag-css' => 'adc3c36d',
-    'phabricator-property-list-view-css' => '6e2d527c',
-    'phabricator-remarkup-css' => '6e2d527c',
+    'phabricator-property-list-view-css' => 'c01cebae',
+    'phabricator-remarkup-css' => 'c01cebae',
     'phabricator-shaped-request' => '504ca7d2',
-    'phabricator-side-menu-view-css' => '6e2d527c',
-    'phabricator-standard-page-view' => '6e2d527c',
-    'phabricator-tag-view-css' => '6e2d527c',
+    'phabricator-side-menu-view-css' => 'c01cebae',
+    'phabricator-standard-page-view' => 'c01cebae',
+    'phabricator-tag-view-css' => 'c01cebae',
     'phabricator-textareautils' => '75ccea43',
     'phabricator-tooltip' => '75ccea43',
-    'phabricator-transaction-view-css' => '6e2d527c',
-    'phabricator-zindex-css' => '6e2d527c',
-    'phui-button-css' => '6e2d527c',
-    'phui-form-css' => '6e2d527c',
-    'phui-icon-view-css' => '6e2d527c',
-    'phui-spacing-css' => '6e2d527c',
-    'sprite-apps-large-css' => '6e2d527c',
-    'sprite-gradient-css' => '6e2d527c',
-    'sprite-icons-css' => '6e2d527c',
-    'sprite-menu-css' => '6e2d527c',
-    'syntax-highlighting-css' => '6e2d527c',
+    'phabricator-transaction-view-css' => 'c01cebae',
+    'phabricator-zindex-css' => 'c01cebae',
+    'phui-button-css' => 'c01cebae',
+    'phui-form-css' => 'c01cebae',
+    'phui-icon-view-css' => 'c01cebae',
+    'phui-spacing-css' => 'c01cebae',
+    'sprite-apps-large-css' => 'c01cebae',
+    'sprite-gradient-css' => 'c01cebae',
+    'sprite-icons-css' => 'c01cebae',
+    'sprite-menu-css' => 'c01cebae',
+    'syntax-highlighting-css' => 'c01cebae',
   ),
 ));
diff --git a/src/applications/config/controller/PhabricatorConfigIssueListController.php b/src/applications/config/controller/PhabricatorConfigIssueListController.php
index 307dad5f26..f9b6fb9b1b 100644
--- a/src/applications/config/controller/PhabricatorConfigIssueListController.php
+++ b/src/applications/config/controller/PhabricatorConfigIssueListController.php
@@ -68,6 +68,7 @@ final class PhabricatorConfigIssueListController
         $list->addItem($item);
       } else {
         $item->addIcon('none', pht('Ignored'));
+        $item->setDisabled(true);
         $item->addAction(
           id(new PHUIListItemView())
             ->setIcon('preview')
diff --git a/src/applications/search/controller/PhabricatorApplicationSearchController.php b/src/applications/search/controller/PhabricatorApplicationSearchController.php
index b6199e6825..058d71ffc8 100644
--- a/src/applications/search/controller/PhabricatorApplicationSearchController.php
+++ b/src/applications/search/controller/PhabricatorApplicationSearchController.php
@@ -262,10 +262,10 @@ final class PhabricatorApplicationSearchController
       if ($named_query->getIsBuiltin()) {
         if ($named_query->getIsDisabled()) {
           $item->addIcon('delete-grey', pht('Disabled'));
+          $item->setDisabled(true);
         } else {
           $item->addIcon('lock-grey', pht('Builtin'));
         }
-        $item->setBarColor('grey');
       } else {
         $item->addAction(
           id(new PHUIListItemView())
diff --git a/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php b/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
index 7786151f7f..1b4d18a7a8 100644
--- a/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
+++ b/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
@@ -172,6 +172,7 @@ final class PhabricatorObjectItemListExample extends PhabricatorUIExample {
         ->addAction(
           id(new PHUIListItemView())
             ->setHref('#')
+            ->setName(pht('Moo'))
             ->setIcon('edit')));
 
     $list->addItem(
@@ -182,10 +183,12 @@ final class PhabricatorObjectItemListExample extends PhabricatorUIExample {
         ->addAction(
           id(new PHUIListItemView())
             ->setHref('#')
+            ->setName(pht('Quack'))
             ->setIcon('edit'))
         ->addAction(
           id(new PHUIListItemView())
             ->setHref('#')
+            ->setName(pht('Oink'))
             ->setIcon('delete')));
 
     $out[] = array($head, $list);
@@ -243,21 +246,31 @@ final class PhabricatorObjectItemListExample extends PhabricatorUIExample {
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
+        ->setObjectName('X1')
         ->setHeader(pht('Normal'))
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
+        ->setObjectName('X2')
         ->setHeader(pht('Highlighted'))
         ->setEffect('highlighted')
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
+        ->setObjectName('X3')
         ->setHeader(pht('Selected'))
         ->setEffect('selected')
         ->setHref('#'));
 
+    $list->addItem(
+      id(new PhabricatorObjectItemView())
+        ->setObjectName('X4')
+        ->setHeader(pht('Disabled'))
+        ->setDisabled(true)
+        ->setHref('#'));
+
     $out[] = array($head, $list);
 
 
diff --git a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
index a1a1385afb..f7a190f545 100644
--- a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
+++ b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
@@ -73,6 +73,7 @@ final class PhabricatorCustomFieldConfigOptionType
       }
 
       $disabled_item->addIcon('none', pht('Disabled'));
+      $disabled_item->setDisabled(true);
       $disabled_item->addAction(
         id(new PHUIListItemView())
           ->setHref('#')
diff --git a/src/view/layout/PhabricatorObjectItemView.php b/src/view/layout/PhabricatorObjectItemView.php
index 937283540e..4f93f46b84 100644
--- a/src/view/layout/PhabricatorObjectItemView.php
+++ b/src/view/layout/PhabricatorObjectItemView.php
@@ -17,6 +17,16 @@ final class PhabricatorObjectItemView extends AphrontTagView {
   private $grippable;
   private $actions = array();
   private $headIcons = array();
+  private $disabled;
+
+  public function setDisabled($disabled) {
+    $this->disabled = $disabled;
+    return $this;
+  }
+
+  public function getDisabled() {
+    return $this->disabled;
+  }
 
   public function addHeadIcon($icon) {
     $this->headIcons[] = $icon;
@@ -172,6 +182,10 @@ final class PhabricatorObjectItemView extends AphrontTagView {
       $item_classes[] = 'phabricator-object-item-with-'.$n.'-actions';
     }
 
+    if ($this->disabled) {
+      $item_classes[] = 'phabricator-object-item-disabled';
+    }
+
     switch ($this->effect) {
       case 'highlighted':
         $item_classes[] = 'phabricator-object-item-highlighted';
diff --git a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
index 481b65f83e..346fca9b6e 100644
--- a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
+++ b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
@@ -358,6 +358,24 @@
   border-left-color: #333333;
 }
 
+/* - Disabled ------------------------------------------------------------------
+
+  Disabled/inactive objects.
+
+*/
+
+.phabricator-object-item-disabled {
+  border-left-color: #d7d7d7;
+}
+
+.phabricator-object-item-disabled .phabricator-object-item-frame {
+  border-color: #d7d7d7;
+}
+
+.phabricator-object-item-disabled .phabricator-object-item-objname {
+  color: #777777;
+}
+
 
 /* - Effects -------------------------------------------------------------------