diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -9,8 +9,8 @@ 'names' => array( 'conpherence.pkg.css' => 'e25569a9', 'conpherence.pkg.js' => '6249a1cf', - 'core.pkg.css' => 'ea0e9c0c', - 'core.pkg.js' => '2291d3b2', + 'core.pkg.css' => '7c03a3b0', + 'core.pkg.js' => 'f1e0e26f', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '4815647b', 'differential.pkg.js' => 'ddfeb49b', @@ -29,15 +29,14 @@ 'rsrc/css/aphront/phabricator-nav-view.css' => 'b29426e9', 'rsrc/css/aphront/table-view.css' => '3225137a', 'rsrc/css/aphront/tokenizer.css' => '9a8cb501', - 'rsrc/css/aphront/tooltip.css' => '1a07aea8', + 'rsrc/css/aphront/tooltip.css' => '3f325821', 'rsrc/css/aphront/typeahead-browse.css' => '8904346a', 'rsrc/css/aphront/typeahead.css' => 'd4f16145', 'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af', 'rsrc/css/application/auth/auth.css' => '0877ed6e', - 'rsrc/css/application/base/main-menu-view.css' => '8eac4166', + 'rsrc/css/application/base/main-menu-view.css' => '93519cb0', 'rsrc/css/application/base/notification-menu.css' => '6a697e43', - 'rsrc/css/application/base/phabricator-application-launch-view.css' => '95351601', - 'rsrc/css/application/base/phui-theme.css' => '798c69b8', + 'rsrc/css/application/base/phui-theme.css' => '9f261c6b', 'rsrc/css/application/base/standard-page-view.css' => '894d8a25', 'rsrc/css/application/chatlog/chatlog.css' => 'd295b020', 'rsrc/css/application/conduit/conduit-api.css' => '7bc725c4', @@ -102,7 +101,7 @@ 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5', 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd', 'rsrc/css/application/releeph/releeph-request-typeahead.css' => '667a48ae', - 'rsrc/css/application/search/application-search-view.css' => '8452c849', + 'rsrc/css/application/search/application-search-view.css' => '20ae9d85', 'rsrc/css/application/search/search-results.css' => '64ad079a', 'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230', 'rsrc/css/application/tokens/tokens.css' => '3d0f239e', @@ -131,9 +130,9 @@ 'rsrc/css/phui/phui-action-list.css' => '5679229f', 'rsrc/css/phui/phui-action-panel.css' => '91c7b835', 'rsrc/css/phui/phui-badge.css' => '3baef8db', - 'rsrc/css/phui/phui-basic-nav-view.css' => '7093573b', + 'rsrc/css/phui/phui-basic-nav-view.css' => 'cb4d5161', 'rsrc/css/phui/phui-big-info-view.css' => 'bd903741', - 'rsrc/css/phui/phui-box.css' => '33b629f8', + 'rsrc/css/phui/phui-box.css' => '3df736e5', 'rsrc/css/phui/phui-button.css' => '00ddac15', 'rsrc/css/phui/phui-chart.css' => '6bf6f78e', 'rsrc/css/phui/phui-cms.css' => 'be43c8a8', @@ -162,17 +161,16 @@ 'rsrc/css/phui/phui-object-box.css' => '8b289e3d', 'rsrc/css/phui/phui-pager.css' => 'bea33d23', 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e', - 'rsrc/css/phui/phui-profile-menu.css' => 'c71ecdcd', 'rsrc/css/phui/phui-property-list-view.css' => '6d8e58ac', 'rsrc/css/phui/phui-remarkup-preview.css' => '1a8f2591', - 'rsrc/css/phui/phui-segment-bar-view.css' => '46342871', + 'rsrc/css/phui/phui-segment-bar-view.css' => 'b1d1b892', 'rsrc/css/phui/phui-spacing.css' => '042804d6', 'rsrc/css/phui/phui-status.css' => 'd5263e49', 'rsrc/css/phui/phui-tag-view.css' => '84d65f26', 'rsrc/css/phui/phui-timeline-view.css' => 'bc523970', 'rsrc/css/phui/phui-two-column-view.css' => 'f63cad3c', - 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'b60ef38a', - 'rsrc/css/phui/workboards/phui-workboard.css' => 'c88912ee', + 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'f0551a33', + 'rsrc/css/phui/workboards/phui-workboard.css' => '3bc85455', 'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92', 'rsrc/css/phui/workboards/phui-workpanel.css' => 'a3a63478', 'rsrc/css/sprite-login.css' => '587d92d7', @@ -488,7 +486,7 @@ 'rsrc/js/core/ShapedRequest.js' => '7cbe244b', 'rsrc/js/core/TextAreaUtils.js' => '320810c8', 'rsrc/js/core/Title.js' => '485aaa6c', - 'rsrc/js/core/ToolTip.js' => 'b5c62c3b', + 'rsrc/js/core/ToolTip.js' => 'd02f7181', 'rsrc/js/core/behavior-active-nav.js' => 'e379b58e', 'rsrc/js/core/behavior-audio-source.js' => '59b251eb', 'rsrc/js/core/behavior-autofocus.js' => '7319e029', @@ -529,7 +527,7 @@ 'rsrc/js/core/behavior-time-typeahead.js' => '522431f7', 'rsrc/js/core/behavior-toggle-class.js' => '92b9ec77', 'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884', - 'rsrc/js/core/behavior-tooltip.js' => '42fcb747', + 'rsrc/js/core/behavior-tooltip.js' => 'c420b0b9', 'rsrc/js/core/behavior-user-menu.js' => '31420f77', 'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d', 'rsrc/js/core/behavior-workflow.js' => '0a3f3021', @@ -555,9 +553,9 @@ 'aphront-panel-view-css' => '8427b78d', 'aphront-table-view-css' => '3225137a', 'aphront-tokenizer-control-css' => '9a8cb501', - 'aphront-tooltip-css' => '1a07aea8', + 'aphront-tooltip-css' => '3f325821', 'aphront-typeahead-control-css' => 'd4f16145', - 'application-search-view-css' => '8452c849', + 'application-search-view-css' => '20ae9d85', 'auth-css' => '0877ed6e', 'bulk-job-css' => 'df9c1d4a', 'changeset-view-manager' => 'a2828756', @@ -681,7 +679,7 @@ 'javelin-behavior-phabricator-reveal-content' => '60821bc7', 'javelin-behavior-phabricator-search-typeahead' => '06c32383', 'javelin-behavior-phabricator-show-older-transactions' => '94c65b72', - 'javelin-behavior-phabricator-tooltips' => '42fcb747', + 'javelin-behavior-phabricator-tooltips' => 'c420b0b9', 'javelin-behavior-phabricator-transaction-comment-form' => 'b23b49e6', 'javelin-behavior-phabricator-transaction-list' => '13c739ea', 'javelin-behavior-phabricator-watch-anchor' => '9f36c42d', @@ -781,7 +779,6 @@ 'path-typeahead' => 'f7fc67ec', 'people-profile-css' => '2473d929', 'phabricator-action-list-view-css' => '5679229f', - 'phabricator-application-launch-view-css' => '95351601', 'phabricator-busy' => '59a7976a', 'phabricator-chatlog-css' => 'd295b020', 'phabricator-content-source-view-css' => '4b8b05d4', @@ -798,7 +795,7 @@ 'phabricator-flag-css' => 'bba8f811', 'phabricator-keyboard-shortcut' => '1ae869f2', 'phabricator-keyboard-shortcut-manager' => '4a021c10', - 'phabricator-main-menu-view' => '8eac4166', + 'phabricator-main-menu-view' => '93519cb0', 'phabricator-nav-view-css' => 'b29426e9', 'phabricator-notification' => 'ccf1cbf8', 'phabricator-notification-css' => '3f6c89c9', @@ -814,7 +811,7 @@ 'phabricator-standard-page-view' => '894d8a25', 'phabricator-textareautils' => '320810c8', 'phabricator-title' => '485aaa6c', - 'phabricator-tooltip' => 'b5c62c3b', + 'phabricator-tooltip' => 'd02f7181', 'phabricator-ui-example-css' => '528b19de', 'phabricator-uiexample-javelin-view' => 'd4a14807', 'phabricator-uiexample-reactor-button' => 'd19198c8', @@ -839,9 +836,9 @@ 'phriction-document-css' => '4282e4ad', 'phui-action-panel-css' => '91c7b835', 'phui-badge-view-css' => '3baef8db', - 'phui-basic-nav-view-css' => '7093573b', + 'phui-basic-nav-view-css' => 'cb4d5161', 'phui-big-info-view-css' => 'bd903741', - 'phui-box-css' => '33b629f8', + 'phui-box-css' => '3df736e5', 'phui-button-css' => '00ddac15', 'phui-calendar-css' => '477acfaa', 'phui-calendar-day-css' => '572b1893', @@ -883,18 +880,17 @@ 'phui-oi-simple-ui-css' => 'a8beebea', 'phui-pager-css' => 'bea33d23', 'phui-pinboard-view-css' => '2495140e', - 'phui-profile-menu-css' => 'c71ecdcd', 'phui-property-list-view-css' => '6d8e58ac', 'phui-remarkup-preview-css' => '1a8f2591', - 'phui-segment-bar-view-css' => '46342871', + 'phui-segment-bar-view-css' => 'b1d1b892', 'phui-spacing-css' => '042804d6', 'phui-status-list-view-css' => 'd5263e49', 'phui-tag-view-css' => '84d65f26', - 'phui-theme-css' => '798c69b8', + 'phui-theme-css' => '9f261c6b', 'phui-timeline-view-css' => 'bc523970', 'phui-two-column-view-css' => 'f63cad3c', - 'phui-workboard-color-css' => 'b60ef38a', - 'phui-workboard-view-css' => 'c88912ee', + 'phui-workboard-color-css' => 'f0551a33', + 'phui-workboard-view-css' => '3bc85455', 'phui-workcard-view-css' => 'cca5fa92', 'phui-workpanel-view-css' => 'a3a63478', 'phuix-action-list-view' => 'b5c256b8', @@ -1178,12 +1174,6 @@ 'javelin-dom', 'javelin-request', ), - '42fcb747' => array( - 'javelin-behavior', - 'javelin-behavior-device', - 'javelin-stratcom', - 'phabricator-tooltip', - ), '44959b73' => array( 'javelin-util', 'javelin-uri', @@ -1612,9 +1602,6 @@ 'javelin-stratcom', 'javelin-util', ), - '8eac4166' => array( - 'phui-theme-css', - ), '8ff5e24c' => array( 'javelin-behavior', 'javelin-stratcom', @@ -1636,6 +1623,9 @@ 'javelin-stratcom', 'javelin-dom', ), + '93519cb0' => array( + 'phui-theme-css', + ), '93ae974f' => array( 'javelin-behavior', 'javelin-dom', @@ -1888,12 +1878,6 @@ 'javelin-install', 'javelin-dom', ), - 'b5c62c3b' => array( - 'javelin-install', - 'javelin-util', - 'javelin-dom', - 'javelin-vector', - ), 'b5d57730' => array( 'javelin-install', 'javelin-stratcom', @@ -1969,6 +1953,12 @@ 'javelin-install', 'javelin-dom', ), + 'c420b0b9' => array( + 'javelin-behavior', + 'javelin-behavior-device', + 'javelin-stratcom', + 'phabricator-tooltip', + ), 'c587b80f' => array( 'javelin-install', ), @@ -2026,6 +2016,12 @@ 'cd2b9b77' => array( 'phui-oi-list-view-css', ), + 'd02f7181' => array( + 'javelin-install', + 'javelin-util', + 'javelin-dom', + 'javelin-vector', + ), 'd0c516d5' => array( 'javelin-behavior', 'javelin-dom', @@ -2318,8 +2314,6 @@ 'phui-spacing-css', 'phui-form-css', 'phui-icon-view-css', - 'phui-profile-menu-css', - 'phabricator-application-launch-view-css', 'phabricator-action-list-view-css', 'phui-property-list-view-css', 'phui-tag-view-css', diff --git a/resources/celerity/packages.php b/resources/celerity/packages.php --- a/resources/celerity/packages.php +++ b/resources/celerity/packages.php @@ -130,9 +130,7 @@ 'phui-spacing-css', 'phui-form-css', 'phui-icon-view-css', - 'phui-profile-menu-css', - 'phabricator-application-launch-view-css', 'phabricator-action-list-view-css', 'phui-property-list-view-css', 'phui-tag-view-css', diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1824,7 +1824,6 @@ 'PhabricatorApplicationEditController' => 'applications/meta/controller/PhabricatorApplicationEditController.php', 'PhabricatorApplicationEditHTTPParameterHelpView' => 'applications/transactions/view/PhabricatorApplicationEditHTTPParameterHelpView.php', 'PhabricatorApplicationEmailCommandsController' => 'applications/meta/controller/PhabricatorApplicationEmailCommandsController.php', - 'PhabricatorApplicationLaunchView' => 'applications/meta/view/PhabricatorApplicationLaunchView.php', 'PhabricatorApplicationPanelController' => 'applications/meta/controller/PhabricatorApplicationPanelController.php', 'PhabricatorApplicationProfileMenuItem' => 'applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php', 'PhabricatorApplicationQuery' => 'applications/meta/query/PhabricatorApplicationQuery.php', @@ -2835,12 +2834,13 @@ 'PhabricatorHomeApplication' => 'applications/home/application/PhabricatorHomeApplication.php', 'PhabricatorHomeConstants' => 'applications/home/constants/PhabricatorHomeConstants.php', 'PhabricatorHomeController' => 'applications/home/controller/PhabricatorHomeController.php', + 'PhabricatorHomeLauncherProfileMenuItem' => 'applications/home/menuitem/PhabricatorHomeLauncherProfileMenuItem.php', 'PhabricatorHomeMainController' => 'applications/home/controller/PhabricatorHomeMainController.php', 'PhabricatorHomeManageProfileMenuItem' => 'applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php', 'PhabricatorHomeMenuController' => 'applications/home/controller/PhabricatorHomeMenuController.php', 'PhabricatorHomeMenuItemController' => 'applications/home/controller/PhabricatorHomeMenuItemController.php', - 'PhabricatorHomePreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php', 'PhabricatorHomeProfileMenuEngine' => 'applications/home/engine/PhabricatorHomeProfileMenuEngine.php', + 'PhabricatorHomeProfileMenuItem' => 'applications/home/menuitem/PhabricatorHomeProfileMenuItem.php', 'PhabricatorHovercardEngineExtension' => 'applications/search/engineextension/PhabricatorHovercardEngineExtension.php', 'PhabricatorHovercardEngineExtensionModule' => 'applications/search/engineextension/PhabricatorHovercardEngineExtensionModule.php', 'PhabricatorIDsSearchEngineExtension' => 'applications/search/engineextension/PhabricatorIDsSearchEngineExtension.php', @@ -6708,7 +6708,6 @@ 'PhabricatorApplicationEditController' => 'PhabricatorApplicationsController', 'PhabricatorApplicationEditHTTPParameterHelpView' => 'AphrontView', 'PhabricatorApplicationEmailCommandsController' => 'PhabricatorApplicationsController', - 'PhabricatorApplicationLaunchView' => 'AphrontTagView', 'PhabricatorApplicationPanelController' => 'PhabricatorApplicationsController', 'PhabricatorApplicationProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorApplicationQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', @@ -7889,12 +7888,13 @@ 'PhabricatorHomeApplication' => 'PhabricatorApplication', 'PhabricatorHomeConstants' => 'PhabricatorHomeController', 'PhabricatorHomeController' => 'PhabricatorController', + 'PhabricatorHomeLauncherProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorHomeMainController' => 'PhabricatorHomeController', 'PhabricatorHomeManageProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorHomeMenuController' => 'PhabricatorHomeController', 'PhabricatorHomeMenuItemController' => 'PhabricatorHomeController', - 'PhabricatorHomePreferencesSettingsPanel' => 'PhabricatorSettingsPanel', 'PhabricatorHomeProfileMenuEngine' => 'PhabricatorProfileMenuEngine', + 'PhabricatorHomeProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorHovercardEngineExtension' => 'Phobject', 'PhabricatorHovercardEngineExtensionModule' => 'PhabricatorConfigModule', 'PhabricatorIDsSearchEngineExtension' => 'PhabricatorSearchEngineExtension', diff --git a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php --- a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php +++ b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php @@ -209,10 +209,7 @@ 'menu.profile.icon.disabled' => 'rgba(255,255,255,.4)', 'menu.main.height' => '44px', - 'menu.profile.width' => '240px', - 'menu.profile.width.collapsed' => '88px', - 'menu.profile.item.height' => '46px', ); } diff --git a/src/applications/home/constants/PhabricatorHomeConstants.php b/src/applications/home/constants/PhabricatorHomeConstants.php --- a/src/applications/home/constants/PhabricatorHomeConstants.php +++ b/src/applications/home/constants/PhabricatorHomeConstants.php @@ -3,6 +3,7 @@ final class PhabricatorHomeConstants extends PhabricatorHomeController { + const ITEM_HOME = 'home.dashboard'; const ITEM_LAUNCHER = 'home.launcher'; const ITEM_MANAGE = 'home.manage.menu'; diff --git a/src/applications/home/controller/PhabricatorHomeController.php b/src/applications/home/controller/PhabricatorHomeController.php --- a/src/applications/home/controller/PhabricatorHomeController.php +++ b/src/applications/home/controller/PhabricatorHomeController.php @@ -2,69 +2,48 @@ abstract class PhabricatorHomeController extends PhabricatorController { - public function buildNav() { - $user = $this->getRequest()->getUser(); + private $home; + private $profileMenu; - $nav = new AphrontSideNavFilterView(); - $nav->setBaseURI(new PhutilURI('/')); + public function buildApplicationMenu() { + $menu = $this->newApplicationMenu(); - $applications = id(new PhabricatorApplicationQuery()) - ->setViewer($user) - ->withInstalled(true) - ->withUnlisted(false) - ->withLaunchable(true) - ->execute(); - - $pinned = $user->getUserSetting( - PhabricatorPinnedApplicationsSetting::SETTINGKEY); - - // Force "Applications" to appear at the bottom. - $meta_app = 'PhabricatorApplicationsApplication'; - $pinned = array_fuse($pinned); - unset($pinned[$meta_app]); - $pinned[$meta_app] = $meta_app; - $applications[$meta_app] = PhabricatorApplication::getByClass($meta_app); - - $tiles = array(); - - $home_app = new PhabricatorHomeApplication(); + $profile_menu = $this->getProfileMenu(); + if ($profile_menu) { + $menu->setProfileMenu($profile_menu); + } - $tiles[] = id(new PhabricatorApplicationLaunchView()) - ->setApplication($home_app) - ->addClass('phabricator-application-launch-phone-only') - ->setUser($user); + return $menu; + } - foreach ($pinned as $pinned_application) { - if (empty($applications[$pinned_application])) { - continue; + protected function getProfileMenu() { + if (!$this->profileMenu) { + $viewer = $this->getViewer(); + $applications = id(new PhabricatorApplicationQuery()) + ->setViewer($viewer) + ->withClasses(array('PhabricatorHomeApplication')) + ->withInstalled(true) + ->execute(); + $home = head($applications); + if (!$home) { + return null; } - $application = $applications[$pinned_application]; + $engine = id(new PhabricatorHomeProfileMenuEngine()) + ->setViewer($viewer) + ->setProfileObject($home); - $tile = id(new PhabricatorApplicationLaunchView()) - ->setApplication($application) - ->setUser($user); + if ($viewer->getPHID()) { + $engine->setCustomPHID($viewer->getPHID()) + ->setMenuType(PhabricatorProfileMenuEngine::MENU_COMBINED); + } else { + $engine->setMenuType(PhabricatorProfileMenuEngine::MENU_GLOBAL); + } - $tiles[] = $tile; + $this->profileMenu = $engine->buildNavigation(); } - $nav->addCustomBlock( - phutil_tag( - 'div', - array( - 'class' => 'application-tile-group', - ), - $tiles)); - - $nav->addFilter( - '', - pht('Customize Menu...'), - '/settings/panel/home/'); - - $nav->addClass('phabricator-side-menu-home'); - $nav->selectFilter(null); - - return $nav; + return $this->profileMenu; } } diff --git a/src/applications/home/controller/PhabricatorHomeMainController.php b/src/applications/home/controller/PhabricatorHomeMainController.php --- a/src/applications/home/controller/PhabricatorHomeMainController.php +++ b/src/applications/home/controller/PhabricatorHomeMainController.php @@ -34,19 +34,17 @@ $content = $this->buildMainResponse(); } - if (!$request->getURIData('only')) { - $nav = $this->buildNav(); - $nav->appendChild( - array( - $content, - id(new PhabricatorGlobalUploadTargetView())->setUser($viewer), - )); - $content = $nav; - } + $nav = $this->getProfileMenu(); + $content = + array( + $content, + id(new PhabricatorGlobalUploadTargetView())->setUser($viewer), + ); return $this->newPage() ->setTitle('Phabricator') ->addClass('phabricator-home') + ->setNavigation($nav) ->appendChild($content); } diff --git a/src/applications/home/controller/PhabricatorHomeMenuController.php b/src/applications/home/controller/PhabricatorHomeMenuController.php --- a/src/applications/home/controller/PhabricatorHomeMenuController.php +++ b/src/applications/home/controller/PhabricatorHomeMenuController.php @@ -9,6 +9,11 @@ public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); + if (!$viewer->getIsAdmin()) { + $uri = '/home/menu/personal/item/configure/'; + return id(new AphrontRedirectResponse())->setURI($uri); + } + $menu = id(new PHUIObjectItemListView()) ->setUser($viewer); diff --git a/src/applications/home/controller/PhabricatorHomeMenuItemController.php b/src/applications/home/controller/PhabricatorHomeMenuItemController.php --- a/src/applications/home/controller/PhabricatorHomeMenuItemController.php +++ b/src/applications/home/controller/PhabricatorHomeMenuItemController.php @@ -24,8 +24,7 @@ ->setProfileObject($home_app) ->setCustomPHID($custom_phid) ->setMenuType($menu) - ->setController($this) - ->setShowNavigation(false); + ->setController($this); return $engine->buildResponse(); } diff --git a/src/applications/home/engine/PhabricatorHomeProfileMenuEngine.php b/src/applications/home/engine/PhabricatorHomeProfileMenuEngine.php --- a/src/applications/home/engine/PhabricatorHomeProfileMenuEngine.php +++ b/src/applications/home/engine/PhabricatorHomeProfileMenuEngine.php @@ -30,6 +30,12 @@ ->withLaunchable(true) ->execute(); + // Default Home Dashboard + $items[] = $this->newItem() + ->setBuiltinKey(PhabricatorHomeConstants::ITEM_HOME) + ->setMenuItemKey( + PhabricatorHomeProfileMenuItem::MENUITEMKEY); + foreach ($applications as $application) { if (!$application->isPinnedByDefault($viewer)) { continue; @@ -46,6 +52,12 @@ ->setMenuItemProperties($properties); } + // Hotlink to More Applications Launcher... + $items[] = $this->newItem() + ->setBuiltinKey(PhabricatorHomeConstants::ITEM_LAUNCHER) + ->setMenuItemKey( + PhabricatorHomeLauncherProfileMenuItem::MENUITEMKEY); + // Single Manage Item, switches URI based on admin/user $items[] = $this->newItem() ->setBuiltinKey(PhabricatorHomeConstants::ITEM_MANAGE) diff --git a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php b/src/applications/home/menuitem/PhabricatorHomeLauncherProfileMenuItem.php copy from src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php copy to src/applications/home/menuitem/PhabricatorHomeLauncherProfileMenuItem.php --- a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php +++ b/src/applications/home/menuitem/PhabricatorHomeLauncherProfileMenuItem.php @@ -1,16 +1,16 @@ getViewer(); if ($viewer->isLoggedIn()) { - $admin = $viewer->getIsAdmin(); $name = $this->getDisplayName($config); - $icon = 'fa-pencil'; - $href = '/home/menu/personal/item/configure/'; - if ($admin) { - $href = '/home/menu/'; - } + $icon = 'fa-globe'; + $href = '/applications/'; $item = $this->newItem() ->setHref($href) diff --git a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php b/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php --- a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php +++ b/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php @@ -10,7 +10,7 @@ } private function getDefaultName() { - return pht('Manage'); + return pht('Edit Menu'); } public function canHideMenuItem( @@ -50,13 +50,9 @@ $viewer = $this->getViewer(); if ($viewer->isLoggedIn()) { - $admin = $viewer->getIsAdmin(); $name = $this->getDisplayName($config); $icon = 'fa-pencil'; - $href = '/home/menu/personal/item/configure/'; - if ($admin) { - $href = '/home/menu/'; - } + $href = '/home/menu/'; $item = $this->newItem() ->setHref($href) diff --git a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php b/src/applications/home/menuitem/PhabricatorHomeProfileMenuItem.php copy from src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php copy to src/applications/home/menuitem/PhabricatorHomeProfileMenuItem.php --- a/src/applications/home/menuitem/PhabricatorHomeManageProfileMenuItem.php +++ b/src/applications/home/menuitem/PhabricatorHomeProfileMenuItem.php @@ -1,16 +1,16 @@ getViewer(); if ($viewer->isLoggedIn()) { - $admin = $viewer->getIsAdmin(); $name = $this->getDisplayName($config); - $icon = 'fa-pencil'; - $href = '/home/menu/personal/item/configure/'; - if ($admin) { - $href = '/home/menu/'; - } + $icon = 'fa-home'; + $href = '/home/'; $item = $this->newItem() ->setHref($href) diff --git a/src/applications/meta/view/PhabricatorApplicationLaunchView.php b/src/applications/meta/view/PhabricatorApplicationLaunchView.php deleted file mode 100644 --- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php +++ /dev/null @@ -1,69 +0,0 @@ -application = $application; - return $this; - } - - protected function getTagName() { - return $this->application ? 'a' : 'div'; - } - - protected function getTagAttributes() { - $application = $this->application; - return array( - 'class' => array('phabricator-application-launch-container'), - 'href' => $application ? $application->getBaseURI() : null, - ); - } - - protected function getTagContent() { - $application = $this->application; - - require_celerity_resource('phabricator-application-launch-view-css'); - - $content = array(); - $icon = null; - if ($application) { - $content[] = phutil_tag( - 'span', - array( - 'class' => 'phabricator-application-launch-name', - ), - $application->getName()); - - $content[] = phutil_tag( - 'span', - array( - 'class' => 'phabricator-application-launch-description', - ), - $application->getShortDescription()); - - $classes = array(); - $classes[] = 'phabricator-application-launch-icon'; - - $styles = array(); - $classes[] = $application->getIcon(); - $classes[] = 'phui-icon-view'; - $classes[] = 'phui-font-fa'; - - $icon = phutil_tag( - 'span', - array( - 'class' => implode(' ', $classes), - 'style' => nonempty(implode('; ', $styles), null), - ), - ''); - } - - return array( - $icon, - $content, - ); - } - -} diff --git a/src/applications/people/controller/PhabricatorPeopleProfileController.php b/src/applications/people/controller/PhabricatorPeopleProfileController.php --- a/src/applications/people/controller/PhabricatorPeopleProfileController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileController.php @@ -60,4 +60,63 @@ return $crumbs; } + public function buildProfileHeader() { + $user = $this->user; + $viewer = $this->getViewer(); + + $profile = $user->loadUserProfile(); + $picture = $user->getProfileImageURI(); + + $profile_icon = PhabricatorPeopleIconSet::getIconIcon($profile->getIcon()); + $profile_title = $profile->getDisplayTitle(); + + $roles = array(); + if ($user->getIsAdmin()) { + $roles[] = pht('Administrator'); + } + if ($user->getIsDisabled()) { + $roles[] = pht('Disabled'); + } + if (!$user->getIsApproved()) { + $roles[] = pht('Not Approved'); + } + if ($user->getIsSystemAgent()) { + $roles[] = pht('Bot'); + } + if ($user->getIsMailingList()) { + $roles[] = pht('Mailing List'); + } + + $tag = null; + if ($roles) { + $tag = id(new PHUITagView()) + ->setName(implode(', ', $roles)) + ->addClass('project-view-header-tag') + ->setType(PHUITagView::TYPE_SHADE); + } + + $header = id(new PHUIHeaderView()) + ->setHeader(array($user->getFullName(), $tag)) + ->setImage($picture) + ->setProfileHeader(true); + + if ($user->getIsDisabled()) { + $header->setStatus('fa-ban', 'red', pht('Disabled')); + } else { + $header->setStatus($profile_icon, 'bluegrey', $profile_title); + } + + $can_edit = PhabricatorPolicyFilter::hasCapability( + $viewer, + $user, + PhabricatorPolicyCapability::CAN_EDIT); + + if ($can_edit) { + $id = $user->getID(); + $header->setImageEditURL($this->getApplicationURI("picture/{$id}/")); + } + + return $header; + } + } diff --git a/src/applications/people/controller/PhabricatorPeopleProfileManageController.php b/src/applications/people/controller/PhabricatorPeopleProfileManageController.php --- a/src/applications/people/controller/PhabricatorPeopleProfileManageController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileManageController.php @@ -23,20 +23,7 @@ } $this->setUser($user); - - $profile = $user->loadUserProfile(); - $picture = $user->getProfileImageURI(); - - $profile_icon = PhabricatorPeopleIconSet::getIconIcon($profile->getIcon()); - $profile_icon = id(new PHUIIconView()) - ->setIcon($profile_icon); - $profile_title = $profile->getDisplayTitle(); - - $header = id(new PHUIHeaderView()) - ->setHeader($user->getFullName()) - ->setSubheader(array($profile_icon, $profile_title)) - ->setImage($picture) - ->setProfileHeader(true); + $header = $this->buildProfileHeader(); $curtain = $this->buildCurtain($user); $properties = $this->buildPropertyView($user); @@ -51,8 +38,10 @@ $manage = id(new PHUITwoColumnView()) ->setHeader($header) + ->addClass('project-view-home') ->setCurtain($curtain) ->addPropertySection(pht('Details'), $properties); + require_celerity_resource('project-view-css'); return $this->newPage() ->setTitle( diff --git a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php --- a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php @@ -23,30 +23,7 @@ } $this->setUser($user); - - $profile = $user->loadUserProfile(); - $picture = $user->getProfileImageURI(); - - $profile_icon = PhabricatorPeopleIconSet::getIconIcon($profile->getIcon()); - $profile_icon = id(new PHUIIconView()) - ->setIcon($profile_icon); - $profile_title = $profile->getDisplayTitle(); - - $header = id(new PHUIHeaderView()) - ->setHeader($user->getFullName()) - ->setSubheader(array($profile_icon, $profile_title)) - ->setImage($picture) - ->setProfileHeader(true); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $user, - PhabricatorPolicyCapability::CAN_EDIT); - - if ($can_edit) { - $id = $user->getID(); - $header->setImageEditURL($this->getApplicationURI("picture/{$id}/")); - } + $header = $this->buildProfileHeader(); $properties = $this->buildPropertyView($user); $name = $user->getUsername(); diff --git a/src/applications/project/application/PhabricatorProjectApplication.php b/src/applications/project/application/PhabricatorProjectApplication.php --- a/src/applications/project/application/PhabricatorProjectApplication.php +++ b/src/applications/project/application/PhabricatorProjectApplication.php @@ -7,7 +7,7 @@ } public function getShortDescription() { - return pht('Get Organized'); + return pht('Projects, Tags, and Teams'); } public function isPinnedByDefault(PhabricatorUser $viewer) { diff --git a/src/applications/project/menuitem/PhabricatorProjectPointsProfileMenuItem.php b/src/applications/project/menuitem/PhabricatorProjectPointsProfileMenuItem.php --- a/src/applications/project/menuitem/PhabricatorProjectPointsProfileMenuItem.php +++ b/src/applications/project/menuitem/PhabricatorProjectPointsProfileMenuItem.php @@ -68,17 +68,16 @@ ->setLimit($limit + 1) ->execute(); + $error = array(); if (count($tasks) > $limit) { - return $this->renderError( + $error[] = pht( - 'Too many tasks to compute statistics for (more than %s).', - new PhutilNumber($limit))); + 'Too many tasks (%s).', + new PhutilNumber($limit)); } if (!$tasks) { - return $this->renderError( - pht( - 'This milestone has no tasks yet.')); + $error[] = pht('This milestone has no tasks.'); } $statuses = array(); @@ -111,14 +110,11 @@ } if ($no_points == count($tasks)) { - return $this->renderError( - pht('No tasks have assigned point values.')); + $error[] = pht('No tasks have points assigned.'); } - if (!$points_total) { - return $this->renderError( - pht('All tasks with assigned point values are worth zero points.')); + $error[] = pht('No tasks have positive points.'); } $label = pht( @@ -158,6 +154,10 @@ ->setTooltip($tooltip); } + if ($error) { + $bar->setLabel(head($error)); + } + $bar = phutil_tag( 'div', array( @@ -173,20 +173,4 @@ ); } - private function renderError($message) { - $message = phutil_tag( - 'div', - array( - 'class' => 'phui-profile-menu-error', - ), - $message); - - $item = $this->newItem() - ->appendChild($message); - - return array( - $item, - ); - } - } diff --git a/src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php b/src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php --- a/src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php +++ b/src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php @@ -88,6 +88,11 @@ ->setName($this->getDisplayName($config)) ->setIcon($app->getIcon()); + // Don't show tooltip if they've set a custom name + if (strlen(($config->getMenuItemProperty('name')))) { + $item->setTooltip($app->getShortDescription()); + } + return array( $item, ); diff --git a/src/applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php b/src/applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php deleted file mode 100644 --- a/src/applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php +++ /dev/null @@ -1,223 +0,0 @@ -getViewer(); - $preferences = $this->getPreferences(); - - $pinned_key = PhabricatorPinnedApplicationsSetting::SETTINGKEY; - $pinned = $preferences->getSettingValue($pinned_key); - - $apps = id(new PhabricatorApplicationQuery()) - ->setViewer($viewer) - ->withInstalled(true) - ->withUnlisted(false) - ->withLaunchable(true) - ->execute(); - - $app_list = array(); - foreach ($pinned as $app) { - if (isset($apps[$app])) { - $app_list[$app] = $apps[$app]; - } - } - - if ($request->getBool('reset')) { - if ($request->isFormPost()) { - $this->writePinnedApplications($preferences, null); - return id(new AphrontRedirectResponse()) - ->setURI($this->getPanelURI()); - } - - return $this->newDialog() - ->setTitle(pht('Reset Applications')) - ->addHiddenInput('reset', 'true') - ->appendParagraph( - pht('Reset pinned applications to their defaults?')) - ->addSubmitButton(pht('Reset Applications')) - ->addCancelButton($this->getPanelURI()); - } - - - if ($request->getBool('add')) { - $options = array(); - foreach ($apps as $app) { - $options[get_class($app)] = $app->getName(); - } - asort($options); - - unset($options['PhabricatorApplicationsApplication']); - - if ($request->isFormPost()) { - $pins = $request->getArr('pin'); - $phid = head($pins); - $app = id(new PhabricatorApplicationQuery()) - ->setViewer($viewer) - ->withPHIDs(array($phid)) - ->executeOne(); - if ($app) { - $pin = get_class($app); - } else { - // This likely means the user submitted an empty form - // which will cause nothing to happen. - $pin = ''; - } - if (isset($options[$pin]) && !in_array($pin, $pinned)) { - $pinned[] = $pin; - - $this->writePinnedApplications($preferences, $pinned); - - return id(new AphrontRedirectResponse()) - ->setURI($this->getPanelURI()); - } - } - - $options_control = id(new AphrontFormTokenizerControl()) - ->setName('pin') - ->setLabel(pht('Application')) - ->setDatasource(new PhabricatorApplicationDatasource()) - ->setLimit(1); - - $form = id(new AphrontFormView()) - ->setViewer($viewer) - ->addHiddenInput('add', 'true') - ->appendRemarkupInstructions( - pht('Choose an application to pin to your home page.')) - ->appendControl($options_control); - - return $this->newDialog() - ->setWidth(AphrontDialogView::WIDTH_FORM) - ->setTitle(pht('Pin Application')) - ->appendChild($form->buildLayoutView()) - ->addSubmitButton(pht('Pin Application')) - ->addCancelButton($this->getPanelURI()); - } - - $unpin = $request->getStr('unpin'); - if ($unpin) { - $app = idx($apps, $unpin); - if ($app) { - if ($request->isFormPost()) { - $pinned = array_diff($pinned, array($unpin)); - - $this->writePinnedApplications($preferences, $pinned); - - return id(new AphrontRedirectResponse()) - ->setURI($this->getPanelURI()); - } - - return $this->newDialog() - ->setTitle(pht('Unpin Application')) - ->addHiddenInput('unpin', $unpin) - ->appendParagraph( - pht( - 'Unpin the %s application from your home page?', - phutil_tag('strong', array(), $app->getName()))) - ->addSubmitButton(pht('Unpin Application')) - ->addCancelButton($this->getPanelURI()); - } - } - - $order = $request->getStrList('order'); - if ($order && $request->validateCSRF()) { - $this->writePinnedApplications($preferences, $order); - - return id(new AphrontRedirectResponse()) - ->setURI($this->getPanelURI()); - } - - $list_id = celerity_generate_unique_node_id(); - - $list = id(new PHUIObjectItemListView()) - ->setViewer($viewer) - ->setID($list_id) - ->setDrag(true); - - Javelin::initBehavior( - 'reorder-applications', - array( - 'listID' => $list_id, - 'panelURI' => $this->getPanelURI(), - )); - - foreach ($app_list as $key => $application) { - if ($key == 'PhabricatorApplicationsApplication') { - continue; - } - - $icon = $application->getIcon(); - if (!$icon) { - $icon = 'fa-globe'; - } - - $item = id(new PHUIObjectItemView()) - ->setHeader($application->getName()) - ->setImageIcon($icon) - ->setGrippable(true); - - $item->addAction( - id(new PHUIListItemView()) - ->setIcon('fa-times') - ->setHref($this->getPanelURI().'?unpin='.$key) - ->setWorkflow(true)); - - $item->addSigil('pinned-application'); - $item->setMetadata( - array( - 'applicationClass' => $key, - )); - - $list->addItem($item); - } - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Pinned Applications')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('Pin Application')) - ->setHref($this->getPanelURI().'?add=true') - ->setWorkflow(true) - ->setIcon('fa-thumb-tack')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('Reset to Defaults')) - ->setHref($this->getPanelURI().'?reset=true') - ->setWorkflow(true) - ->setIcon('fa-recycle')); - - $box = id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setObjectList($list); - - return $box; - } - - private function writePinnedApplications( - PhabricatorUserPreferences $preferences, - $pinned) { - - $pinned_key = PhabricatorPinnedApplicationsSetting::SETTINGKEY; - $this->writeSetting($preferences, $pinned_key, $pinned); - } - -} diff --git a/src/view/layout/AphrontSideNavFilterView.php b/src/view/layout/AphrontSideNavFilterView.php --- a/src/view/layout/AphrontSideNavFilterView.php +++ b/src/view/layout/AphrontSideNavFilterView.php @@ -204,7 +204,6 @@ private function renderFlexNav() { require_celerity_resource('phabricator-nav-view-css'); - require_celerity_resource('phui-profile-menu-css'); $nav_classes = array(); $nav_classes[] = 'phabricator-nav'; @@ -310,7 +309,7 @@ $classes[] = 'phui-navigation-shell'; if ($this->getIsProfileMenu()) { - $classes[] = 'phui-profile-menu'; + $classes[] = 'phui-profile-menu phui-basic-nav'; } else { $classes[] = 'phui-basic-nav'; } diff --git a/src/view/phui/PHUIListItemView.php b/src/view/phui/PHUIListItemView.php --- a/src/view/phui/PHUIListItemView.php +++ b/src/view/phui/PHUIListItemView.php @@ -30,6 +30,7 @@ private $hideInApplicationMenu; private $icons = array(); private $openInNewWindow = false; + private $tooltip; public function setOpenInNewWindow($open_in_new_window) { $this->openInNewWindow = $open_in_new_window; @@ -176,6 +177,11 @@ return $this->icons; } + public function setTooltip($tooltip) { + $this->tooltip = $tooltip; + return $this; + } + protected function getTagName() { return 'li'; } @@ -185,7 +191,7 @@ $classes[] = 'phui-list-item-view'; $classes[] = 'phui-list-item-'.$this->type; - if ($this->icon) { + if ($this->icon || $this->profileImage) { $classes[] = 'phui-list-item-has-icon'; } @@ -230,6 +236,16 @@ 'align' => 'E', ); } else { + if ($this->tooltip) { + Javelin::initBehavior('phabricator-tooltips'); + $sigil = 'has-tooltip'; + $meta = array( + 'tip' => $this->tooltip, + 'align' => 'E', + 'size' => 300, + ); + } + $external = null; if ($this->isExternal) { $external = " \xE2\x86\x97"; diff --git a/webroot/rsrc/css/aphront/tooltip.css b/webroot/rsrc/css/aphront/tooltip.css --- a/webroot/rsrc/css/aphront/tooltip.css +++ b/webroot/rsrc/css/aphront/tooltip.css @@ -5,17 +5,24 @@ .jx-tooltip-container { position: absolute; padding: 5px; + opacity: 1; + transition: opacity 0.25s ease; +} + +.jx-tooltip-hidden { + opacity: 0; } .jx-tooltip-inner { position: relative; - background: rgba({$alphablack}, .9); + background: #000; border-radius: 3px; } .jx-tooltip { color: #f9f9f9; font-size: {$normalfontsize}; + -webkit-font-smoothing: antialiased; padding: 6px 8px; overflow: hidden; white-space: pre-wrap; diff --git a/webroot/rsrc/css/application/base/main-menu-view.css b/webroot/rsrc/css/application/base/main-menu-view.css --- a/webroot/rsrc/css/application/base/main-menu-view.css +++ b/webroot/rsrc/css/application/base/main-menu-view.css @@ -164,10 +164,7 @@ right: 0; position: absolute; font-size: {$normalfontsize}; - border-width: 1px; - border-color: {$lightblueborder}; - border-radius: 3px; - border-style: solid; + border: none; background-color: #fff; height: 28px; padding: 3px 28px 3px 52px; @@ -186,7 +183,6 @@ background: #fff; opacity: 1; color: {$darkbluetext}; - border-color: {$sky}; box-shadow: none; } diff --git a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css b/webroot/rsrc/css/application/base/phabricator-application-launch-view.css deleted file mode 100644 --- a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css +++ /dev/null @@ -1,103 +0,0 @@ -/** - * @provides phabricator-application-launch-view-css - */ - - -/* - Application List ---------------------------------------------------------- - - Spacing container for the list of large application buttons. - -*/ - - -.application-tile-group { - overflow: hidden; -} - - -/* - Application Launch Button ------------------------------------------------- - - Spacing container for the list of large application buttons. - -*/ - -a.phabricator-application-launch-container, -div.phabricator-application-launch-container { - display: block; - float: left; - overflow: hidden; - position: relative; - text-decoration: none; - width: 100%; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - padding: 4px 0; -} - -.device-phone div.phabricator-application-launch-container { - display: none; -} - -.phabricator-application-launch-icon { - position: absolute; - width: 38px; - height: 18px; - top: 6px; - left: 0; - font-size: 18px; - text-align: center; - vertical-align: bottom; - color: {$darkbluetext}; - text-shadow: {$whitetextshadow}; -} - -.device-desktop a.phabricator-application-launch-container:hover { - background-color: rgba({$alphablack},.07); - text-decoration: none; -} - -.device-desktop a.phabricator-application-launch-container:hover - .phabricator-application-launch-icon { - color: {$sky}; -} - -.phabricator-application-launch-name { - display: block; - font-weight: bold; - color: {$darkbluetext}; - font-size: {$normalfontsize}; - margin-left: 36px; -} - -.phabricator-application-launch-description { - color: {$bluetext}; - font-size: {$smallestfontsize}; - margin-left: 36px; - text-overflow: ellipsis; - width: 150px; - overflow: hidden; - white-space: nowrap; - display: inline-block; - padding: 2px 0 0 0; -} - -.phabricator-application-launch-attention { - position: absolute; - top: 8px; - right: 8px; - color: {$darkbluetext}; - font-weight: bold; - font-size: {$smallerfontsize}; -} - -.phabricator-application-attention-count { - color: {$fire}; -} - -a.phabricator-application-launch-phone-only { - display: none; -} - -.device-phone a.phabricator-application-launch-phone-only { - display: block; -} diff --git a/webroot/rsrc/css/application/base/phui-theme.css b/webroot/rsrc/css/application/base/phui-theme.css --- a/webroot/rsrc/css/application/base/phui-theme.css +++ b/webroot/rsrc/css/application/base/phui-theme.css @@ -5,7 +5,7 @@ /*--- Header Colors ----------------------------------------------------------*/ .phui-theme-blindigo .phabricator-main-menu-background { - background: #41506e; + background: #4a5f88; } .phui-theme-dark .phabricator-main-menu-background { diff --git a/webroot/rsrc/css/application/search/application-search-view.css b/webroot/rsrc/css/application/search/application-search-view.css --- a/webroot/rsrc/css/application/search/application-search-view.css +++ b/webroot/rsrc/css/application/search/application-search-view.css @@ -6,6 +6,10 @@ background-color: #fff; } +.application-search-view .phui-crumbs-view { + background-color: #fff; +} + .application-search-view .application-search-results.phui-object-box { margin: 0; padding: 0 16px 24px; @@ -17,7 +21,7 @@ } .application-search-view .application-search-results .phui-profile-header { - padding: 16px 8px; + padding: 22px 8px; border-bottom: 1px solid {$thinblueborder}; } diff --git a/webroot/rsrc/css/phui/phui-basic-nav-view.css b/webroot/rsrc/css/phui/phui-basic-nav-view.css --- a/webroot/rsrc/css/phui/phui-basic-nav-view.css +++ b/webroot/rsrc/css/phui/phui-basic-nav-view.css @@ -19,26 +19,26 @@ display: table-cell; position: relative; vertical-align: top; - width: {$menu.profile.width}; - max-width: {$menu.profile.width}; margin-top: 0; overflow: hidden; } +.phabricator-home.device-phone .phabricator-nav-content { + display: none; +} + +.phabricator-home .phui-basic-nav .phabricator-side-menu { + background: transparent; +} + .phui-basic-nav.phui-navigation-shell .phabricator-nav-local { width: 205px; - padding-top: 4px; + padding-top: 12px; padding-right: 8px; } -.phui-basic-nav .phabricator-side-menu { - background-color: {$page.sidenav}; -} - .phui-two-column-view .phui-basic-nav.phui-navigation-shell .phabricator-nav-local { - width: {$menu.profile.width}; - max-width: {$menu.profile.width}; padding-right: 0; padding-top: 0; } @@ -55,13 +55,12 @@ display: block; white-space: nowrap; text-decoration: none; - font-size: 13px; -webkit-font-smoothing: antialiased; } .phui-basic-nav .phabricator-side-menu .phui-list-item-href { display: block; - padding: 6px 8px 6px 24px; + padding: 6px 8px 6px 20px; color: {$darkbluetext}; border-top-right-radius: 3px; border-bottom-right-radius: 3px; @@ -69,10 +68,30 @@ text-overflow: ellipsis } +.phui-basic-nav .phabricator-side-menu .phui-list-item-has-icon + .phui-list-item-href { + padding-left: 12px; + } + .phui-basic-nav .phabricator-side-menu .phui-list-item-icon { - margin-left: -12px; + margin-left: -4px; text-align: center; - width: 24px; + width: 30px; +} + +.phui-basic-nav .phabricator-side-menu .phui-divider { + border-bottom: 1px solid rgba({$alphablack},.08); + margin: 0 0 8px 8px; + padding: 8px 0 0 0; +} + +.phui-basic-nav .phabricator-side-menu .phui-list-item-icon.phuihead-small { + display: inline-block; + height: 16px; + width: 16px; + border-radius: 3px; + background-size: 100%; + margin: -2px 7px -2px 3px; } .phui-basic-nav .phabricator-side-menu .phui-list-item-selected { @@ -91,7 +110,7 @@ .phui-basic-nav .phabricator-side-menu .phui-list-item-selected .phui-list-item-href { - padding-left: 20px; + margin-left: -4px; } .phui-basic-nav .phabricator-side-menu .phui-list-item-type-label { @@ -108,3 +127,12 @@ text-decoration: none; background-color: rgba({$alphablack},.07); } + +.phui-basic-nav .phabricator-side-menu .phui-list-item-type-link + + .phui-list-item-type-label { + margin-top: 12px; +} + +.phui-basic-nav .phui-profile-segment-bar { + padding: 4px 4px 8px 12px; +} diff --git a/webroot/rsrc/css/phui/phui-box.css b/webroot/rsrc/css/phui/phui-box.css --- a/webroot/rsrc/css/phui/phui-box.css +++ b/webroot/rsrc/css/phui/phui-box.css @@ -49,10 +49,11 @@ .phui-object-box.phui-box-blue div.phui-info-severity-nodata, .phui-object-box.phui-box-grey div.phui-info-severity-nodata { - background: transparent; - padding: 20px 4px 24px; + background: #fff; + padding: 32px 0 20px; text-align: center; border: none; + margin: 0; color: {$greytext}; } diff --git a/webroot/rsrc/css/phui/phui-profile-menu.css b/webroot/rsrc/css/phui/phui-profile-menu.css deleted file mode 100644 --- a/webroot/rsrc/css/phui/phui-profile-menu.css +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @provides phui-profile-menu-css - */ - -.device-desktop .phui-profile-menu .phabricator-nav-local { - width: {$menu.profile.width.collapsed}; - max-width: {$menu.profile.width.collapsed}; -} - -.device-desktop .phui-profile-menu .phabricator-nav-content { - display: table-cell; - margin-left: 0; -} - -.phui-profile-menu .phui-basic-nav { - width: 205px; -} - -.phui-profile-menu .phabricator-side-menu { - background: #dee0e7; - width: 240px; -} - -.phabricator-side-menu .phui-profile-menu-footer-1 { - background: #dee0e7; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-view { - position: relative; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-href { - display: block; - text-decoration: none; - padding: 0 8px 0 48px; - height: 48px; - font-size: {$biggerfontsize}; - -webkit-font-smoothing: antialiased; - line-height: 22px; - overflow: hidden; - color: {$darkbluetext}; - text-overflow: ellipsis; - line-height: 48px; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-icon, -.phui-profile-menu .phabricator-side-menu - .phui-list-item-href .phui-list-item-icon { - position: absolute; - top: 12px; - left: 13px; - font-size: 24px; - width: 24px; - height: 24px; - line-height: 24px; - text-align: center; - color: {$darkbluetext}; - background-size: 100%; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-href { - text-align: center; - padding: 42px 4px 14px; - line-height: 14px; - height: auto; - font-size: {$smallerfontsize}; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-name { - display: block; - overflow: hidden; - text-overflow: ellipsis; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-icon, -.phui-profile-menu .phabricator-side-menu .phui-list-item-href - .phui-list-item-icon { - top: 14px; - left: 32px; -} - -.phui-profile-menu .phabricator-side-menu - .phui-list-item-disabled - .phui-list-item-icon { - color: {$lightgreytext}; -} - -.phui-profile-menu .phabricator-side-menu .phui-icon-view { - border-radius: 3px; -} - -.device-desktop .phui-profile-menu .phabricator-side-menu - .phui-list-item-href:hover { - background-color: rgba({$alphablack},0.05); -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-selected - .phui-list-item-href { - background-color: rgba({$alphablack},0.1); -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-selected - .phui-list-item-href:hover { - background-color: rgba({$alphablack},0.15); -} - -.phui-profile-menu .phabricator-side-menu .phui-divider { - margin: 4px 0; - border-bottom: 1px solid rgba({$alphablack}, 0.2); -} - -.phui-profile-menu .phabricator-side-menu .phui-motivator { - white-space: normal; - padding: 18px 15px; - font-size: 12px; - color: {$darkbluetext}; -} - -.phui-profile-menu .phabricator-side-menu .phui-motivator .phui-icon-view { - position: static; - font-size: 12px; - color: {$darkbluetext}; -} - -.phui-profile-menu .phabricator-side-menu .phui-profile-menu-error { - color: rgba({$alphawhite}, 0.5); - font-size: {$smallerfontsize}; - padding: 16px; -} - -.phui-profile-menu .phabricator-side-menu .phui-profile-menu-error { - padding: 16px 8px; - overflow: hidden; - text-overflow: ellipsis; -} - -.phui-profile-menu .phabricator-side-menu .phui-list-item-disabled - .phui-list-item-href, -.phui-profile-menu .phui-list-sidenav .phui-list-item-disabled - .phui-list-item-href { - color: rgba({$lightgreytext}); -} - -.phui-profile-menu .phabricator-side-menu .phui-profile-segment-bar { - color: {$darkbluetext}; - font-size: {$smallerfontsize}; - -webkit-font-smoothing: antialiased; - padding: 8px 12px 16px; -} - -.phui-profile-menu .phabricator-side-menu .phui-profile-segment-bar { - padding: 8px 8px 16px; -} - -.phui-profile-menu .phabricator-side-menu .phui-profile-menu-spacer { - box-sizing: border-box; - height: {$menu.profile.item.height}; -} - -!print .phui-profile-menu .phabricator-side-menu { - display: none; -} diff --git a/webroot/rsrc/css/phui/phui-segment-bar-view.css b/webroot/rsrc/css/phui/phui-segment-bar-view.css --- a/webroot/rsrc/css/phui/phui-segment-bar-view.css +++ b/webroot/rsrc/css/phui/phui-segment-bar-view.css @@ -7,14 +7,14 @@ margin-bottom: 4px; } -.phui-profile-menu-collapsed .phui-segment-bar-label { - width: 74px; +.phui-basic-nav .phui-segment-bar-label { + width: 180px; overflow: hidden; text-overflow: ellipsis; } .phui-segment-bar-segments { - background: {$lightgreybackground}; + background: rgba({$alphablue}, .1); border-radius: 4px; position: relative; overflow: hidden; diff --git a/webroot/rsrc/css/phui/workboards/phui-workboard-color.css b/webroot/rsrc/css/phui/workboards/phui-workboard-color.css --- a/webroot/rsrc/css/phui/workboards/phui-workboard-color.css +++ b/webroot/rsrc/css/phui/workboards/phui-workboard-color.css @@ -60,6 +60,10 @@ color: rgba({$alphawhite},.8); } +.phui-workboard-color .phui-segment-bar-label { + color: rgba({$alphawhite},.8); +} + /* Gradients */ .phui-workboard-gradient-red { diff --git a/webroot/rsrc/css/phui/workboards/phui-workboard.css b/webroot/rsrc/css/phui/workboards/phui-workboard.css --- a/webroot/rsrc/css/phui/workboards/phui-workboard.css +++ b/webroot/rsrc/css/phui/workboards/phui-workboard.css @@ -32,7 +32,7 @@ } .device-desktop .project-board-wrapper .phui-workboard-view-shadow { - left: {$menu.profile.width.collapsed}; + left: 212px; } !print .project-board-wrapper .phui-workboard-view-shadow { diff --git a/webroot/rsrc/js/core/ToolTip.js b/webroot/rsrc/js/core/ToolTip.js --- a/webroot/rsrc/js/core/ToolTip.js +++ b/webroot/rsrc/js/core/ToolTip.js @@ -46,7 +46,7 @@ var node = JX.$N( 'div', - { className: 'jx-tooltip-container' }, + { className: 'jx-tooltip-container jx-tooltip-hidden' }, node_inner); node.style.maxWidth = scale + 'px'; @@ -61,6 +61,7 @@ // Jump through some hoops trying to auto-position the tooltip var pos = self._getSmartPosition(align, root, node); pos.setPos(node); + JX.DOM.alterClass(node, 'jx-tooltip-hidden', false); }, _getSmartPosition: function (align, root, node) { diff --git a/webroot/rsrc/js/core/behavior-tooltip.js b/webroot/rsrc/js/core/behavior-tooltip.js --- a/webroot/rsrc/js/core/behavior-tooltip.js +++ b/webroot/rsrc/js/core/behavior-tooltip.js @@ -26,7 +26,7 @@ JX.Tooltip.show( e.getNode('has-tooltip'), - data.size || 120, + data.size || 160, data.align || 'N', data.tip); });