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' => '0b64e988', 'conpherence.pkg.js' => '6249a1cf', - 'core.pkg.css' => '1afa1d13', - 'core.pkg.js' => '892976d4', + 'core.pkg.css' => '85f51b68', + 'core.pkg.js' => '2c684890', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '9535a7e6', 'differential.pkg.js' => 'ddfeb49b', @@ -21,7 +21,7 @@ 'maniphest.pkg.js' => '5ab2753f', 'rsrc/css/aphront/aphront-bars.css' => '231ac33c', 'rsrc/css/aphront/dark-console.css' => 'f54bf286', - 'rsrc/css/aphront/dialog-view.css' => '938f52c5', + 'rsrc/css/aphront/dialog-view.css' => '5e5aa60b', 'rsrc/css/aphront/list-filter-view.css' => '5d6f0526', 'rsrc/css/aphront/multi-column.css' => '84cc6640', 'rsrc/css/aphront/notification.css' => '3f6c89c9', @@ -34,8 +34,8 @@ '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' => 'f03e17be', - 'rsrc/css/application/base/notification-menu.css' => '1e055865', + 'rsrc/css/application/base/main-menu-view.css' => '7bc94bc2', + '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/standard-page-view.css' => '894d8a25', @@ -96,7 +96,7 @@ 'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43', 'rsrc/css/application/policy/policy.css' => '957ea14c', 'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96', - 'rsrc/css/application/project/project-card-view.css' => '9418c97d', + 'rsrc/css/application/project/project-card-view.css' => 'd27c67ae', 'rsrc/css/application/project/project-view.css' => '1e6f7072', 'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733', 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5', @@ -108,7 +108,7 @@ 'rsrc/css/application/tokens/tokens.css' => '3d0f239e', 'rsrc/css/application/uiexample/example.css' => '528b19de', 'rsrc/css/core/core.css' => 'd0801452', - 'rsrc/css/core/remarkup.css' => 'aebc1180', + 'rsrc/css/core/remarkup.css' => '4a2de2bb', 'rsrc/css/core/syntax.css' => '769d3498', 'rsrc/css/core/z-index.css' => '5e72c4e0', 'rsrc/css/diviner/diviner-shared.css' => 'aa3656aa', @@ -128,29 +128,29 @@ 'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '9d9685d6', 'rsrc/css/phui/object-item/phui-oi-list-view.css' => 'bff632a4', 'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => 'a8beebea', - 'rsrc/css/phui/phui-action-list.css' => 'e1d48300', + '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-big-info-view.css' => 'bd903741', 'rsrc/css/phui/phui-box.css' => '33b629f8', - 'rsrc/css/phui/phui-button.css' => '43f4912e', + 'rsrc/css/phui/phui-button.css' => '9718cb0c', 'rsrc/css/phui/phui-chart.css' => '6bf6f78e', 'rsrc/css/phui/phui-cms.css' => 'be43c8a8', 'rsrc/css/phui/phui-comment-form.css' => '48fbd65d', 'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad', 'rsrc/css/phui/phui-crumbs-view.css' => 'f82868f2', 'rsrc/css/phui/phui-curtain-view.css' => '947bf1a4', - 'rsrc/css/phui/phui-document-pro.css' => 'c354e312', + 'rsrc/css/phui/phui-document-pro.css' => 'f56738ed', 'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf', 'rsrc/css/phui/phui-document.css' => 'c32e8dec', 'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9', 'rsrc/css/phui/phui-fontkit.css' => '9cda225e', - 'rsrc/css/phui/phui-form-view.css' => '04cc4771', + 'rsrc/css/phui/phui-form-view.css' => 'adca31ce', 'rsrc/css/phui/phui-form.css' => '2342b0e5', 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f', 'rsrc/css/phui/phui-header-view.css' => '6ec8f155', - 'rsrc/css/phui/phui-hovercard.css' => 'de1a2119', + 'rsrc/css/phui/phui-hovercard.css' => 'e904f5dc', 'rsrc/css/phui/phui-icon-set-selector.css' => '1ab67aad', 'rsrc/css/phui/phui-icon.css' => '09f46dd9', 'rsrc/css/phui/phui-image-mask.css' => 'a8498f9c', @@ -170,10 +170,10 @@ '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' => '7babf5b9', + 'rsrc/css/phui/phui-two-column-view.css' => 'a0d3858a', 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'b60ef38a', 'rsrc/css/phui/workboards/phui-workboard.css' => 'c88912ee', - 'rsrc/css/phui/workboards/phui-workcard.css' => '00979e40', + 'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92', 'rsrc/css/phui/workboards/phui-workpanel.css' => 'a3a63478', 'rsrc/css/sprite-login.css' => '587d92d7', 'rsrc/css/sprite-tokens.css' => '9cdfd599', @@ -538,7 +538,7 @@ 'rsrc/js/phui/behavior-phui-submenu.js' => 'a6f7a73b', 'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9', 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8', - 'rsrc/js/phuix/PHUIXActionView.js' => '8cf6d262', + 'rsrc/js/phuix/PHUIXActionView.js' => '9cc178ed', 'rsrc/js/phuix/PHUIXAutocomplete.js' => '6d86ce8b', 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '82e270da', 'rsrc/js/phuix/PHUIXFormControl.js' => 'bbece68d', @@ -548,7 +548,7 @@ 'almanac-css' => 'dbb9b3af', 'aphront-bars' => '231ac33c', 'aphront-dark-console-css' => 'f54bf286', - 'aphront-dialog-view-css' => '938f52c5', + 'aphront-dialog-view-css' => '5e5aa60b', 'aphront-list-filter-view-css' => '5d6f0526', 'aphront-multi-column-view-css' => '84cc6640', 'aphront-panel-view-css' => '8427b78d', @@ -778,7 +778,7 @@ 'paste-css' => '1898e534', 'path-typeahead' => 'f7fc67ec', 'people-profile-css' => '2473d929', - 'phabricator-action-list-view-css' => 'e1d48300', + 'phabricator-action-list-view-css' => '5679229f', 'phabricator-application-launch-view-css' => '95351601', 'phabricator-busy' => '59a7976a', 'phabricator-chatlog-css' => 'd295b020', @@ -796,15 +796,15 @@ 'phabricator-flag-css' => 'bba8f811', 'phabricator-keyboard-shortcut' => '1ae869f2', 'phabricator-keyboard-shortcut-manager' => '4a021c10', - 'phabricator-main-menu-view' => 'f03e17be', + 'phabricator-main-menu-view' => '7bc94bc2', 'phabricator-nav-view-css' => 'b29426e9', 'phabricator-notification' => 'ccf1cbf8', 'phabricator-notification-css' => '3f6c89c9', - 'phabricator-notification-menu-css' => '1e055865', + 'phabricator-notification-menu-css' => '6a697e43', 'phabricator-object-selector-css' => '85ee8ce6', 'phabricator-phtize' => 'd254d646', 'phabricator-prefab' => '8d40ae75', - 'phabricator-remarkup-css' => 'aebc1180', + 'phabricator-remarkup-css' => '4a2de2bb', 'phabricator-search-results-css' => '64ad079a', 'phabricator-shaped-request' => '7cbe244b', 'phabricator-slowvote-css' => 'a94b7230', @@ -840,7 +840,7 @@ 'phui-basic-nav-view-css' => '7093573b', 'phui-big-info-view-css' => 'bd903741', 'phui-box-css' => '33b629f8', - 'phui-button-css' => '43f4912e', + 'phui-button-css' => '9718cb0c', 'phui-calendar-css' => '477acfaa', 'phui-calendar-day-css' => '572b1893', 'phui-calendar-list-css' => 'fcc9fb41', @@ -853,16 +853,16 @@ 'phui-curtain-view-css' => '947bf1a4', 'phui-document-summary-view-css' => '9ca48bdf', 'phui-document-view-css' => 'c32e8dec', - 'phui-document-view-pro-css' => 'c354e312', + 'phui-document-view-pro-css' => 'f56738ed', 'phui-feed-story-css' => '44a9c8e9', 'phui-font-icon-base-css' => '870a7360', 'phui-fontkit-css' => '9cda225e', 'phui-form-css' => '2342b0e5', - 'phui-form-view-css' => '04cc4771', + 'phui-form-view-css' => 'adca31ce', 'phui-head-thing-view-css' => 'fd311e5f', 'phui-header-view-css' => '6ec8f155', 'phui-hovercard' => '1bd28176', - 'phui-hovercard-view-css' => 'de1a2119', + 'phui-hovercard-view-css' => 'e904f5dc', 'phui-icon-set-selector-css' => '1ab67aad', 'phui-icon-view-css' => '09f46dd9', 'phui-image-mask-css' => 'a8498f9c', @@ -890,13 +890,13 @@ 'phui-tag-view-css' => '84d65f26', 'phui-theme-css' => '798c69b8', 'phui-timeline-view-css' => 'bc523970', - 'phui-two-column-view-css' => '7babf5b9', + 'phui-two-column-view-css' => 'a0d3858a', 'phui-workboard-color-css' => 'b60ef38a', 'phui-workboard-view-css' => 'c88912ee', - 'phui-workcard-view-css' => '00979e40', + 'phui-workcard-view-css' => 'cca5fa92', 'phui-workpanel-view-css' => 'a3a63478', 'phuix-action-list-view' => 'b5c256b8', - 'phuix-action-view' => '8cf6d262', + 'phuix-action-view' => '9cc178ed', 'phuix-autocomplete' => '6d86ce8b', 'phuix-dropdown-menu' => '82e270da', 'phuix-form-control-view' => 'bbece68d', @@ -905,7 +905,7 @@ 'policy-edit-css' => '815c66f7', 'policy-transaction-detail-css' => '82100a43', 'ponder-view-css' => 'fbd45f96', - 'project-card-view-css' => '9418c97d', + 'project-card-view-css' => 'd27c67ae', 'project-view-css' => '1e6f7072', 'releeph-core' => '9b3c5733', 'releeph-preview-branch' => 'b7a6f4a5', @@ -1508,6 +1508,9 @@ 'owners-path-editor', 'javelin-behavior', ), + '7bc94bc2' => array( + 'phui-theme-css', + ), '7cbe244b' => array( 'javelin-install', 'javelin-util', @@ -1603,11 +1606,6 @@ 'javelin-stratcom', 'javelin-behavior', ), - '8cf6d262' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-util', - ), '8d3bc1b2' => array( 'javelin-dom', 'javelin-util', @@ -1707,6 +1705,11 @@ 'javelin-workflow', 'javelin-stratcom', ), + '9cc178ed' => array( + 'javelin-install', + 'javelin-dom', + 'javelin-util', + ), '9d9685d6' => array( 'phui-oi-list-view-css', ), @@ -2161,9 +2164,6 @@ 'javelin-workflow', 'javelin-json', ), - 'f03e17be' => array( - 'phui-theme-css', - ), 'f12cbc9f' => array( 'phui-oi-list-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 @@ -1698,7 +1698,6 @@ 'PHUIListItemView' => 'view/phui/PHUIListItemView.php', 'PHUIListView' => 'view/phui/PHUIListView.php', 'PHUIListViewTestCase' => 'view/layout/__tests__/PHUIListViewTestCase.php', - 'PHUIMainMenuView' => 'view/phui/PHUIMainMenuView.php', 'PHUIObjectBoxView' => 'view/phui/PHUIObjectBoxView.php', 'PHUIObjectItemListExample' => 'applications/uiexample/examples/PHUIObjectItemListExample.php', 'PHUIObjectItemListView' => 'view/phui/PHUIObjectItemListView.php', @@ -2592,7 +2591,6 @@ 'PhabricatorEditEngineConfigurationTransactionQuery' => 'applications/transactions/query/PhabricatorEditEngineConfigurationTransactionQuery.php', 'PhabricatorEditEngineConfigurationViewController' => 'applications/transactions/controller/PhabricatorEditEngineConfigurationViewController.php', 'PhabricatorEditEngineController' => 'applications/transactions/controller/PhabricatorEditEngineController.php', - 'PhabricatorEditEngineCreateQuickActions' => 'applications/settings/quickmenu/PhabricatorEditEngineCreateQuickActions.php', 'PhabricatorEditEngineDatasource' => 'applications/transactions/typeahead/PhabricatorEditEngineDatasource.php', 'PhabricatorEditEngineExtension' => 'applications/transactions/engineextension/PhabricatorEditEngineExtension.php', 'PhabricatorEditEngineExtensionModule' => 'applications/transactions/engineextension/PhabricatorEditEngineExtensionModule.php', @@ -2673,7 +2671,6 @@ 'PhabricatorFavoritesConstants' => 'applications/favorites/constants/PhabricatorFavoritesConstants.php', 'PhabricatorFavoritesController' => 'applications/favorites/controller/PhabricatorFavoritesController.php', 'PhabricatorFavoritesMainController' => 'applications/favorites/controller/PhabricatorFavoritesMainController.php', - 'PhabricatorFavoritesManageProfileMenuItem' => 'applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php', 'PhabricatorFavoritesMenuItemController' => 'applications/favorites/controller/PhabricatorFavoritesMenuItemController.php', 'PhabricatorFavoritesProfileMenuEngine' => 'applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php', 'PhabricatorFaxContentSource' => 'infrastructure/contentsource/PhabricatorFaxContentSource.php', @@ -2828,7 +2825,6 @@ 'PhabricatorHelpDocumentationController' => 'applications/help/controller/PhabricatorHelpDocumentationController.php', 'PhabricatorHelpEditorProtocolController' => 'applications/help/controller/PhabricatorHelpEditorProtocolController.php', 'PhabricatorHelpKeyboardShortcutController' => 'applications/help/controller/PhabricatorHelpKeyboardShortcutController.php', - 'PhabricatorHelpMainMenuBarExtension' => 'applications/help/extension/PhabricatorHelpMainMenuBarExtension.php', 'PhabricatorHeraldApplication' => 'applications/herald/application/PhabricatorHeraldApplication.php', 'PhabricatorHeraldContentSource' => 'applications/herald/contentsource/PhabricatorHeraldContentSource.php', 'PhabricatorHighSecurityRequestExceptionHandler' => 'aphront/handler/PhabricatorHighSecurityRequestExceptionHandler.php', @@ -2841,7 +2837,6 @@ 'PhabricatorHomeMenuItemController' => 'applications/home/controller/PhabricatorHomeMenuItemController.php', 'PhabricatorHomePreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php', 'PhabricatorHomeProfileMenuEngine' => 'applications/home/engine/PhabricatorHomeProfileMenuEngine.php', - 'PhabricatorHomeQuickCreateController' => 'applications/home/controller/PhabricatorHomeQuickCreateController.php', 'PhabricatorHovercardEngineExtension' => 'applications/search/engineextension/PhabricatorHovercardEngineExtension.php', 'PhabricatorHovercardEngineExtensionModule' => 'applications/search/engineextension/PhabricatorHovercardEngineExtensionModule.php', 'PhabricatorIDsSearchEngineExtension' => 'applications/search/engineextension/PhabricatorIDsSearchEngineExtension.php', @@ -3317,7 +3312,6 @@ 'PhabricatorPeopleLogQuery' => 'applications/people/query/PhabricatorPeopleLogQuery.php', 'PhabricatorPeopleLogSearchEngine' => 'applications/people/query/PhabricatorPeopleLogSearchEngine.php', 'PhabricatorPeopleLogsController' => 'applications/people/controller/PhabricatorPeopleLogsController.php', - 'PhabricatorPeopleMainMenuBarExtension' => 'applications/people/extension/PhabricatorPeopleMainMenuBarExtension.php', 'PhabricatorPeopleManageProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleManageProfileMenuItem.php', 'PhabricatorPeopleNewController' => 'applications/people/controller/PhabricatorPeopleNewController.php', 'PhabricatorPeopleNoOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleNoOwnerDatasource.php', @@ -3562,7 +3556,6 @@ 'PhabricatorQueryOrderItem' => 'infrastructure/query/order/PhabricatorQueryOrderItem.php', 'PhabricatorQueryOrderTestCase' => 'infrastructure/query/order/__tests__/PhabricatorQueryOrderTestCase.php', 'PhabricatorQueryOrderVector' => 'infrastructure/query/order/PhabricatorQueryOrderVector.php', - 'PhabricatorQuickActions' => 'applications/settings/quickmenu/PhabricatorQuickActions.php', 'PhabricatorRateLimitRequestExceptionHandler' => 'aphront/handler/PhabricatorRateLimitRequestExceptionHandler.php', 'PhabricatorRecaptchaConfigOptions' => 'applications/config/option/PhabricatorRecaptchaConfigOptions.php', 'PhabricatorRecipientHasBadgeEdgeType' => 'applications/badges/edge/PhabricatorRecipientHasBadgeEdgeType.php', @@ -3771,7 +3764,6 @@ 'PhabricatorSettingsListController' => 'applications/settings/controller/PhabricatorSettingsListController.php', 'PhabricatorSettingsLogsPanelGroup' => 'applications/settings/panelgroup/PhabricatorSettingsLogsPanelGroup.php', 'PhabricatorSettingsMainController' => 'applications/settings/controller/PhabricatorSettingsMainController.php', - 'PhabricatorSettingsMainMenuBarExtension' => 'applications/settings/extension/PhabricatorSettingsMainMenuBarExtension.php', 'PhabricatorSettingsPanel' => 'applications/settings/panel/PhabricatorSettingsPanel.php', 'PhabricatorSettingsPanelGroup' => 'applications/settings/panelgroup/PhabricatorSettingsPanelGroup.php', 'PhabricatorSettingsTimezoneController' => 'applications/settings/controller/PhabricatorSettingsTimezoneController.php', @@ -6575,7 +6567,6 @@ 'PHUIListItemView' => 'AphrontTagView', 'PHUIListView' => 'AphrontTagView', 'PHUIListViewTestCase' => 'PhabricatorTestCase', - 'PHUIMainMenuView' => 'AphrontView', 'PHUIObjectBoxView' => 'AphrontTagView', 'PHUIObjectItemListExample' => 'PhabricatorUIExample', 'PHUIObjectItemListView' => 'AphrontTagView', @@ -6679,7 +6670,7 @@ 'PhabricatorAccessLogConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorAccessibilitySetting' => 'PhabricatorSelectSetting', 'PhabricatorAccountSettingsPanel' => 'PhabricatorEditEngineSettingsPanel', - 'PhabricatorActionListView' => 'AphrontView', + 'PhabricatorActionListView' => 'AphrontTagView', 'PhabricatorActionView' => 'AphrontView', 'PhabricatorActivitySettingsPanel' => 'PhabricatorSettingsPanel', 'PhabricatorAdministratorsPolicyRule' => 'PhabricatorPolicyRule', @@ -7613,7 +7604,6 @@ 'PhabricatorEditEngineConfigurationTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 'PhabricatorEditEngineConfigurationViewController' => 'PhabricatorEditEngineController', 'PhabricatorEditEngineController' => 'PhabricatorApplicationTransactionController', - 'PhabricatorEditEngineCreateQuickActions' => 'PhabricatorQuickActions', 'PhabricatorEditEngineDatasource' => 'PhabricatorTypeaheadDatasource', 'PhabricatorEditEngineExtension' => 'Phobject', 'PhabricatorEditEngineExtensionModule' => 'PhabricatorConfigModule', @@ -7696,7 +7686,6 @@ 'PhabricatorFavoritesConstants' => 'PhabricatorFavoritesController', 'PhabricatorFavoritesController' => 'PhabricatorController', 'PhabricatorFavoritesMainController' => 'PhabricatorFavoritesController', - 'PhabricatorFavoritesManageProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorFavoritesMenuItemController' => 'PhabricatorFavoritesController', 'PhabricatorFavoritesProfileMenuEngine' => 'PhabricatorProfileMenuEngine', 'PhabricatorFaxContentSource' => 'PhabricatorContentSource', @@ -7887,7 +7876,6 @@ 'PhabricatorHelpDocumentationController' => 'PhabricatorHelpController', 'PhabricatorHelpEditorProtocolController' => 'PhabricatorHelpController', 'PhabricatorHelpKeyboardShortcutController' => 'PhabricatorHelpController', - 'PhabricatorHelpMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension', 'PhabricatorHeraldApplication' => 'PhabricatorApplication', 'PhabricatorHeraldContentSource' => 'PhabricatorContentSource', 'PhabricatorHighSecurityRequestExceptionHandler' => 'PhabricatorRequestExceptionHandler', @@ -7900,7 +7888,6 @@ 'PhabricatorHomeMenuItemController' => 'PhabricatorHomeController', 'PhabricatorHomePreferencesSettingsPanel' => 'PhabricatorSettingsPanel', 'PhabricatorHomeProfileMenuEngine' => 'PhabricatorProfileMenuEngine', - 'PhabricatorHomeQuickCreateController' => 'PhabricatorHomeController', 'PhabricatorHovercardEngineExtension' => 'Phobject', 'PhabricatorHovercardEngineExtensionModule' => 'PhabricatorConfigModule', 'PhabricatorIDsSearchEngineExtension' => 'PhabricatorSearchEngineExtension', @@ -8450,7 +8437,6 @@ 'PhabricatorPeopleLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'PhabricatorPeopleLogSearchEngine' => 'PhabricatorApplicationSearchEngine', 'PhabricatorPeopleLogsController' => 'PhabricatorPeopleController', - 'PhabricatorPeopleMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension', 'PhabricatorPeopleManageProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorPeopleNewController' => 'PhabricatorPeopleController', 'PhabricatorPeopleNoOwnerDatasource' => 'PhabricatorTypeaheadDatasource', @@ -8749,7 +8735,6 @@ 'Phobject', 'Iterator', ), - 'PhabricatorQuickActions' => 'Phobject', 'PhabricatorRateLimitRequestExceptionHandler' => 'PhabricatorRequestExceptionHandler', 'PhabricatorRecaptchaConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorRecipientHasBadgeEdgeType' => 'PhabricatorEdgeType', @@ -9016,7 +9001,6 @@ 'PhabricatorSettingsListController' => 'PhabricatorController', 'PhabricatorSettingsLogsPanelGroup' => 'PhabricatorSettingsPanelGroup', 'PhabricatorSettingsMainController' => 'PhabricatorController', - 'PhabricatorSettingsMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension', 'PhabricatorSettingsPanel' => 'Phobject', 'PhabricatorSettingsPanelGroup' => 'Phobject', 'PhabricatorSettingsTimezoneController' => 'PhabricatorController', diff --git a/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php b/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php --- a/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php +++ b/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php @@ -13,9 +13,7 @@ $viewer = $this->getViewer(); if ($viewer->isLoggedIn()) { - return array( - $this->buildLogoutMenu(), - ); + return array(); } $controller = $this->getController(); @@ -30,25 +28,6 @@ ); } - private function buildLogoutMenu() { - $controller = $this->getController(); - - $is_selected = ($controller instanceof PhabricatorLogoutController); - - $bar_item = id(new PHUIListItemView()) - ->addClass('core-menu-item') - ->setName(pht('Log Out')) - ->setIcon('fa-sign-out') - ->setWorkflow(true) - ->setHref('/logout/') - ->setSelected($is_selected) - ->setAural(pht('Log Out')); - - return id(new PHUIMainMenuView()) - ->setOrder(900) - ->setMenuBarItem($bar_item); - } - private function buildLoginMenu() { $controller = $this->getController(); @@ -58,16 +37,12 @@ $uri->setQueryParam('next', $path); } - $bar_item = id(new PHUIListItemView()) - ->addClass('core-menu-item') - ->setName(pht('Log In')) - ->setIcon('fa-sign-in') + return id(new PHUIButtonView()) + ->setTag('a') + ->setText(pht('Log In')) ->setHref($uri) - ->setAural(pht('Log In')); - - return id(new PHUIMainMenuView()) - ->setOrder(900) - ->setMenuBarItem($bar_item); + ->setNoCSS(true) + ->addClass('phabricator-core-login-button'); } } diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -172,36 +172,24 @@ $articles = $this->getHelpDocumentationArticles($viewer); if ($articles) { - $items[] = id(new PHUIListItemView()) - ->setType(PHUIListItemView::TYPE_LABEL) - ->setName(pht('%s Documentation', $this->getName())); foreach ($articles as $article) { - $item = id(new PHUIListItemView()) + $item = id(new PhabricatorActionView()) ->setName($article['name']) - ->setIcon('fa-book') - ->setHref($article['href']) - ->setOpenInNewWindow(true); - + ->setHref($article['href']); $items[] = $item; } } $command_specs = $this->getMailCommandObjects(); if ($command_specs) { - $items[] = id(new PHUIListItemView()) - ->setType(PHUIListItemView::TYPE_LABEL) - ->setName(pht('Email Help')); foreach ($command_specs as $key => $spec) { $object = $spec['object']; $class = get_class($this); $href = '/applications/mailcommands/'.$class.'/'.$key.'/'; - - $item = id(new PHUIListItemView()) + $item = id(new PhabricatorActionView()) ->setName($spec['name']) - ->setIcon('fa-envelope-o') - ->setHref($href) - ->setOpenInNewWindow(true); + ->setHref($href); $items[] = $item; } } 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 @@ -29,7 +29,7 @@ "Arial, sans-serif", // Drop Shadow - 'dropshadow' => '0 1px 6px rgba(0, 0, 0, .25)', + 'dropshadow' => '0 2px 12px rgba(0, 0, 0, .20)', 'whitetextshadow' => '0 1px 0 rgba(255, 255, 255, 1)', // Anchors diff --git a/src/applications/favorites/application/PhabricatorFavoritesApplication.php b/src/applications/favorites/application/PhabricatorFavoritesApplication.php --- a/src/applications/favorites/application/PhabricatorFavoritesApplication.php +++ b/src/applications/favorites/application/PhabricatorFavoritesApplication.php @@ -15,7 +15,7 @@ } public function getIcon() { - return 'fa-star-o'; + return 'fa-star'; } public function getRoutes() { @@ -32,8 +32,64 @@ return false; } - public function getApplicationOrder() { - return 9; + public function buildMainMenuExtraNodes( + PhabricatorUser $viewer, + PhabricatorController $controller = null) { + + return id(new PHUIButtonView()) + ->setTag('a') + ->setHref('#') + ->setIcon('fa-star') + ->addClass('phabricator-core-user-menu') + ->setNoCSS(true) + ->setDropdown(true) + ->setDropdownMenu($this->renderFavoritesDropdown($viewer)); + } + + private function renderFavoritesDropdown(PhabricatorUser $viewer) { + + $application = __CLASS__; + $favorites = id(new PhabricatorApplicationQuery()) + ->setViewer($viewer) + ->withClasses(array($application)) + ->withInstalled(true) + ->executeOne(); + + $filter_view = id(new PhabricatorFavoritesProfileMenuEngine()) + ->setViewer($viewer) + ->setProfileObject($favorites) + ->setMenuType(PhabricatorProfileMenuEngine::MENU_COMBINED) + ->buildNavigation(); + + $menu_view = $filter_view->getMenu(); + $item_views = $menu_view->getItems(); + + $view = id(new PhabricatorActionListView()) + ->setViewer($viewer); + foreach ($item_views as $item) { + $type = null; + if (!strlen($item->getName())) { + $type = PhabricatorActionView::TYPE_DIVIDER; + } + $action = id(new PhabricatorActionView()) + ->setName($item->getName()) + ->setHref($item->getHref()) + ->setType($type); + $view->addAction($action); + } + + // Build out edit interface + if ($viewer->isLoggedIn()) { + $view->addAction( + id(new PhabricatorActionView()) + ->setType(PhabricatorActionView::TYPE_DIVIDER)); + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Edit Favorites')) + ->setHref('/favorites/')); + } + + return $view; } } diff --git a/src/applications/favorites/constants/PhabricatorFavoritesConstants.php b/src/applications/favorites/constants/PhabricatorFavoritesConstants.php --- a/src/applications/favorites/constants/PhabricatorFavoritesConstants.php +++ b/src/applications/favorites/constants/PhabricatorFavoritesConstants.php @@ -6,6 +6,6 @@ const ITEM_TASK = 'favorites.task'; const ITEM_PROJECT = 'favorites.project'; const ITEM_REPOSITORY = 'favorites.repository'; - const ITEM_MANAGE = 'favorites.manage'; + const ITEM_DIVIDER = 'favorites.divider'; } diff --git a/src/applications/favorites/controller/PhabricatorFavoritesMainController.php b/src/applications/favorites/controller/PhabricatorFavoritesMainController.php --- a/src/applications/favorites/controller/PhabricatorFavoritesMainController.php +++ b/src/applications/favorites/controller/PhabricatorFavoritesMainController.php @@ -10,6 +10,11 @@ public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); + if (!$viewer->getIsAdmin()) { + $uri = '/favorites/personal/item/configure/'; + return id(new AphrontRedirectResponse())->setURI($uri); + } + $menu = id(new PHUIObjectItemListView()) ->setUser($viewer); diff --git a/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php b/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php --- a/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php +++ b/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php @@ -7,8 +7,10 @@ $viewer = $this->getViewer(); $type = $request->getURIData('type'); $custom_phid = null; + $menu = PhabricatorProfileMenuEngine::MENU_GLOBAL; if ($type == 'personal') { $custom_phid = $viewer->getPHID(); + $menu = PhabricatorProfileMenuEngine::MENU_PERSONAL; } $application = 'PhabricatorFavoritesApplication'; @@ -21,7 +23,9 @@ $engine = id(new PhabricatorFavoritesProfileMenuEngine()) ->setProfileObject($favorites) ->setCustomPHID($custom_phid) - ->setController($this); + ->setController($this) + ->setMenuType($menu) + ->setShowNavigation(false); return $engine->buildResponse(); } diff --git a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php --- a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php +++ b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php @@ -21,6 +21,7 @@ protected function getBuiltinProfileItems($object) { $items = array(); $custom_phid = $this->getCustomPHID(); + $viewer = $this->getViewer(); // Built-in Global Defaults if (!$custom_phid) { @@ -58,12 +59,6 @@ ->setMenuItemProperties($create_repository); } - // Single Manage Item, switches URI based on admin/user - $items[] = $this->newItem() - ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_MANAGE) - ->setMenuItemKey( - PhabricatorFavoritesManageProfileMenuItem::MENUITEMKEY); - return $items; } diff --git a/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php b/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php deleted file mode 100644 --- a/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php +++ /dev/null @@ -1,72 +0,0 @@ -getMenuItemProperty('name'); - - if (strlen($name)) { - return $name; - } - - return $this->getDefaultName(); - } - - public function buildEditEngineFields( - PhabricatorProfileMenuItemConfiguration $config) { - return array( - id(new PhabricatorTextEditField()) - ->setKey('name') - ->setLabel(pht('Name')) - ->setPlaceholder($this->getDefaultName()) - ->setValue($config->getMenuItemProperty('name')), - ); - } - - protected function newNavigationMenuItems( - PhabricatorProfileMenuItemConfiguration $config) { - $viewer = $this->getViewer(); - - if ($viewer->isLoggedIn()) { - $admin = $viewer->getIsAdmin(); - $name = $this->getDisplayName($config); - $icon = 'fa-pencil'; - $href = '/favorites/personal/item/configure/'; - if ($admin) { - $href = '/favorites/'; - } - - $item = $this->newItem() - ->setHref($href) - ->setName($name) - ->setIcon($icon); - } - - return array( - $item, - ); - } - -} diff --git a/src/applications/help/controller/PhabricatorHelpDocumentationController.php b/src/applications/help/controller/PhabricatorHelpDocumentationController.php --- a/src/applications/help/controller/PhabricatorHelpDocumentationController.php +++ b/src/applications/help/controller/PhabricatorHelpDocumentationController.php @@ -31,7 +31,6 @@ $list->addItem( id(new PHUIObjectItemView()) ->setHeader($item->getName()) - ->setWorkflow($item->getWorkflow()) ->setHref($item->getHref())); } diff --git a/src/applications/help/extension/PhabricatorHelpMainMenuBarExtension.php b/src/applications/help/extension/PhabricatorHelpMainMenuBarExtension.php deleted file mode 100644 --- a/src/applications/help/extension/PhabricatorHelpMainMenuBarExtension.php +++ /dev/null @@ -1,70 +0,0 @@ -getApplication(); - if (!$application) { - return array(); - } - - $viewer = $this->getViewer(); - $help_links = $application->getHelpMenuItems($viewer); - if (!$help_links) { - return array(); - } - - $help_id = celerity_generate_unique_node_id(); - - Javelin::initBehavior( - 'aphlict-dropdown', - array( - 'bubbleID' => $help_id, - 'dropdownID' => 'phabricator-help-menu', - 'local' => true, - 'desktop' => true, - 'right' => true, - )); - - $help_name = pht('%s Help', $application->getName()); - - $help_item = id(new PHUIListItemView()) - ->setIcon('fa-book') - ->addClass('core-menu-item') - ->setID($help_id) - ->setName($help_name) - ->setHref('/help/documentation/'.get_class($application).'/') - ->setAural($help_name); - - $view = new PHUIListView(); - foreach ($help_links as $help_link) { - $view->addMenuItem($help_link); - } - - $dropdown_menu = phutil_tag( - 'div', - array( - 'id' => 'phabricator-help-menu', - 'class' => 'phabricator-main-menu-dropdown phui-list-sidenav', - 'style' => 'display: none', - ), - $view); - - $help_menu = id(new PHUIMainMenuView()) - ->setOrder(200) - ->setMenuBarItem($help_item) - ->appendChild($dropdown_menu); - - return array( - $help_menu, - ); - } - -} diff --git a/src/applications/home/application/PhabricatorHomeApplication.php b/src/applications/home/application/PhabricatorHomeApplication.php --- a/src/applications/home/application/PhabricatorHomeApplication.php +++ b/src/applications/home/application/PhabricatorHomeApplication.php @@ -2,7 +2,8 @@ final class PhabricatorHomeApplication extends PhabricatorApplication { - private $quickItems; + private $application; + const DASHBOARD_DEFAULT = 'dashboard:default'; public function getBaseURI() { @@ -26,7 +27,6 @@ '/' => 'PhabricatorHomeMainController', '/(?Phome)/' => 'PhabricatorHomeMainController', '/home/' => array( - 'create/' => 'PhabricatorHomeQuickCreateController', 'menu/' => array( '' => 'PhabricatorHomeMenuController', '(?Pglobal|personal)/item/' => $this->getProfileMenuRouting( @@ -44,73 +44,87 @@ return 9; } - public function buildMainMenuItems( - PhabricatorUser $user, + public function buildMainMenuExtraNodes( + PhabricatorUser $viewer, PhabricatorController $controller = null) { - $quick_items = $this->getQuickActionItems($user); - if (!$quick_items) { - return array(); + if (!$viewer->isLoggedIn()) { + return; + } + + $image = $viewer->getProfileImageURI(); + if ($controller) { + $this->application = $controller->getCurrentApplication(); } - $items = array(); - $create_id = celerity_generate_unique_node_id(); - - Javelin::initBehavior( - 'aphlict-dropdown', - array( - 'bubbleID' => $create_id, - 'dropdownID' => 'phabricator-quick-create-menu', - 'local' => true, - 'desktop' => true, - 'right' => true, - )); - - $item = id(new PHUIListItemView()) - ->setName(pht('Quick Actions')) - ->setIcon('fa-plus') - ->addClass('core-menu-item') - ->setHref('/home/create/') - ->addSigil('quick-create-menu') - ->setID($create_id) - ->setAural(pht('Quick Actions')) - ->setOrder(300); - $items[] = $item; - - return $items; + $profile_image = id(new PHUIIconView()) + ->setImage($image) + ->setHeadSize(PHUIIconView::HEAD_SMALL); + + return id(new PHUIButtonView()) + ->setTag('a') + ->setHref('/p/'.$viewer->getUsername().'/') + ->setIcon($profile_image) + ->addClass('phabricator-core-user-menu') + ->setNoCSS(true) + ->setDropdown(true) + ->setDropdownMenu($this->renderUserDropdown($viewer)); } - public function buildMainMenuExtraNodes( - PhabricatorUser $viewer, - PhabricatorController $controller = null) { + private function renderUserDropdown(PhabricatorUser $viewer) { + + $view = id(new PhabricatorActionListView()) + ->setViewer($viewer); + + // User Menu + $view->addAction( + id(new PhabricatorActionView()) + ->setName($viewer->getRealName()) + ->setLabel(true)); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Profile')) + ->setHref('/p/'.$viewer->getUsername().'/')); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Settings')) + ->setHref('/settings/user/'.$viewer->getUsername().'/')); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Manage')) + ->setHref('/people/manage/'.$viewer->getID().'/')); + + // Help Menus + if ($this->application) { + $application = $this->application; + $help_links = $application->getHelpMenuItems($viewer); + if ($help_links) { + $view->addAction( + id(new PhabricatorActionView()) + ->setType(PhabricatorActionView::TYPE_DIVIDER)); + + foreach ($help_links as $link) { + $link->setOpenInNewWindow(true); + $view->addAction($link); + } + } + } - $items = $this->getQuickActionItems($viewer); + // Logout Menu + $view->addAction( + id(new PhabricatorActionView()) + ->setType(PhabricatorActionView::TYPE_DIVIDER)); - $view = null; - if ($items) { - $view = new PHUIListView(); - foreach ($items as $item) { - $view->addMenuItem($item); - } + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Log Out %s', $viewer->getUsername())) + ->setHref('/logout/') + ->setWorkflow(true)); - return phutil_tag( - 'div', - array( - 'id' => 'phabricator-quick-create-menu', - 'class' => 'phabricator-main-menu-dropdown phui-list-sidenav', - 'style' => 'display: none', - ), - $view); - } return $view; } - private function getQuickActionItems(PhabricatorUser $viewer) { - if ($this->quickItems === null) { - $items = PhabricatorQuickActions::loadMenuItemsForUser($viewer); - $this->quickItems = $items; - } - return $this->quickItems; - } - } diff --git a/src/applications/home/controller/PhabricatorHomeQuickCreateController.php b/src/applications/home/controller/PhabricatorHomeQuickCreateController.php deleted file mode 100644 --- a/src/applications/home/controller/PhabricatorHomeQuickCreateController.php +++ /dev/null @@ -1,47 +0,0 @@ -getViewer(); - - $items = PhabricatorQuickActions::loadMenuItemsForUser($viewer); - - $list = id(new PHUIObjectItemListView()) - ->setUser($viewer); - - foreach ($items as $item) { - $list->addItem( - id(new PHUIObjectItemView()) - ->setHeader($item->getName()) - ->setWorkflow($item->getWorkflow()) - ->setHref($item->getHref())); - } - - $title = pht('Quick Create'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb(pht('Quick Create')); - $crumbs->setBorder(true); - - $box = id(new PHUIObjectBoxView()) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($list); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-plus-square'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter($box); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - -} diff --git a/src/applications/people/extension/PhabricatorPeopleMainMenuBarExtension.php b/src/applications/people/extension/PhabricatorPeopleMainMenuBarExtension.php deleted file mode 100644 --- a/src/applications/people/extension/PhabricatorPeopleMainMenuBarExtension.php +++ /dev/null @@ -1,41 +0,0 @@ -getViewer(); - $image = $viewer->getProfileImageURI(); - - $bar_item = id(new PHUIListItemView()) - ->setName($viewer->getUsername()) - ->setHref('/p/'.$viewer->getUsername().'/') - ->addClass('core-menu-item') - ->setAural(pht('Profile')); - - $classes = array( - 'phabricator-core-menu-icon', - 'phabricator-core-menu-profile-image', - ); - - $bar_item->appendChild( - phutil_tag( - 'span', - array( - 'class' => implode(' ', $classes), - 'style' => 'background-image: url('.$image.')', - ), - '')); - - $profile_menu = id(new PHUIMainMenuView()) - ->setOrder(100) - ->setMenuBarItem($bar_item); - - return array( - $profile_menu, - ); - } - -} diff --git a/src/applications/phame/application/PhabricatorPhameApplication.php b/src/applications/phame/application/PhabricatorPhameApplication.php --- a/src/applications/phame/application/PhabricatorPhameApplication.php +++ b/src/applications/phame/application/PhabricatorPhameApplication.php @@ -11,7 +11,7 @@ } public function getIcon() { - return 'fa-star'; + return 'fa-feed'; } public function getShortDescription() { diff --git a/src/applications/search/engine/PhabricatorProfileMenuEngine.php b/src/applications/search/engine/PhabricatorProfileMenuEngine.php --- a/src/applications/search/engine/PhabricatorProfileMenuEngine.php +++ b/src/applications/search/engine/PhabricatorProfileMenuEngine.php @@ -6,9 +6,15 @@ private $profileObject; private $customPHID; private $items; + private $menuType; private $defaultItem; private $controller; private $navigation; + private $showNavigation = true; + + const MENU_GLOBAL = 'global'; + const MENU_PERSONAL = 'personal'; + const MENU_COMBINED = 'menu'; public function setViewer(PhabricatorUser $viewer) { $this->viewer = $viewer; @@ -57,6 +63,24 @@ return $this->defaultItem; } + public function setMenuType($type) { + $this->menuType = $type; + return $this; + } + + private function getMenuType() { + return $this->menuType; + } + + public function setShowNavigation($show) { + $this->showNavigation = $show; + return $this; + } + + public function getShowNavigation() { + return $this->showNavigation; + } + abstract protected function getItemURI($path); abstract protected function isMenuEngineConfigurable(); @@ -130,6 +154,14 @@ $navigation->selectFilter('item.configure'); $crumbs = $controller->buildApplicationCrumbsForEditEngine(); + switch ($this->getMenuType()) { + case 'personal': + $crumbs->addTextCrumb(pht('Personal')); + break; + case 'global': + $crumbs->addTextCrumb(pht('Global')); + break; + } switch ($item_action) { case 'view': @@ -177,11 +209,15 @@ $crumbs->setBorder(true); - return $controller->newPage() + $page = $controller->newPage() ->setTitle(pht('Configure Menu')) - ->setNavigation($navigation) ->setCrumbs($crumbs) ->appendChild($content); + + if ($this->getShowNavigation()) { + $page->setNavigation($navigation); + } + return $page; } public function buildNavigation() { @@ -258,17 +294,20 @@ $object = $this->getProfileObject(); $items = $this->loadBuiltinProfileItems(); + $menu = $this->getMenuType(); if ($this->getCustomPHID()) { $stored_items = id(new PhabricatorProfileMenuItemConfigurationQuery()) ->setViewer($viewer) ->withProfilePHIDs(array($object->getPHID())) ->withCustomPHIDs(array($this->getCustomPHID())) + ->setMenuType($menu) ->execute(); } else { $stored_items = id(new PhabricatorProfileMenuItemConfigurationQuery()) ->setViewer($viewer) ->withProfilePHIDs(array($object->getPHID())) + ->setMenuType($menu) ->execute(); } @@ -501,7 +540,8 @@ )); $list = id(new PHUIObjectItemListView()) - ->setID($list_id); + ->setID($list_id) + ->setNoDataString(pht('This menu currently has no items.')); foreach ($items as $item) { $id = $item->getID(); @@ -638,11 +678,11 @@ ->setName($doc_name)); $header = id(new PHUIHeaderView()) - ->setHeader(pht('Profile Menu Items')) + ->setHeader(pht('Menu Items')) ->setHeaderIcon('fa-list'); $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Navigation')) + ->setHeaderText(pht('Current Menu Items')) ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) ->setObjectList($list); diff --git a/src/applications/search/query/PhabricatorProfileMenuItemConfigurationQuery.php b/src/applications/search/query/PhabricatorProfileMenuItemConfigurationQuery.php --- a/src/applications/search/query/PhabricatorProfileMenuItemConfigurationQuery.php +++ b/src/applications/search/query/PhabricatorProfileMenuItemConfigurationQuery.php @@ -7,6 +7,7 @@ private $phids; private $profilePHIDs; private $customPHIDs; + private $menuType; public function withIDs(array $ids) { $this->ids = $ids; @@ -28,6 +29,11 @@ return $this; } + public function setMenuType($type) { + $this->menuType = $type; + return $this; + } + public function newResultObject() { return new PhabricatorProfileMenuItemConfiguration(); } diff --git a/src/applications/settings/extension/PhabricatorSettingsMainMenuBarExtension.php b/src/applications/settings/extension/PhabricatorSettingsMainMenuBarExtension.php deleted file mode 100644 --- a/src/applications/settings/extension/PhabricatorSettingsMainMenuBarExtension.php +++ /dev/null @@ -1,29 +0,0 @@ -getController(); - $is_selected = ($controller instanceof PhabricatorSettingsMainController); - - $bar_item = id(new PHUIListItemView()) - ->setName(pht('Settings')) - ->setIcon('fa-wrench') - ->addClass('core-menu-item') - ->setSelected($is_selected) - ->setHref('/settings/') - ->setAural(pht('Settings')); - - $settings_menu = id(new PHUIMainMenuView()) - ->setMenuBarItem($bar_item) - ->setOrder(400); - - return array( - $settings_menu, - ); - } - -} diff --git a/src/applications/settings/quickmenu/PhabricatorEditEngineCreateQuickActions.php b/src/applications/settings/quickmenu/PhabricatorEditEngineCreateQuickActions.php deleted file mode 100644 --- a/src/applications/settings/quickmenu/PhabricatorEditEngineCreateQuickActions.php +++ /dev/null @@ -1,46 +0,0 @@ -getViewer(); - - $engines = PhabricatorEditEngine::getAllEditEngines(); - - foreach ($engines as $key => $engine) { - if (!$engine->hasQuickCreateActions()) { - unset($engines[$key]); - } - } - - if (!$engines) { - return array(); - } - - $engine_keys = array_keys($engines); - - $configs = id(new PhabricatorEditEngineConfigurationQuery()) - ->setViewer($viewer) - ->withEngineKeys($engine_keys) - ->withIsDefault(true) - ->withIsDisabled(false) - ->execute(); - $configs = msort($configs, 'getCreateSortKey'); - $configs = mgroup($configs, 'getEngineKey'); - - $items = array(); - foreach ($engines as $key => $engine) { - $engine_configs = idx($configs, $key, array()); - $engine_items = $engine->newQuickCreateActions($engine_configs); - foreach ($engine_items as $engine_item) { - $items[] = $engine_item; - } - } - - return $items; - } - -} diff --git a/src/applications/settings/quickmenu/PhabricatorQuickActions.php b/src/applications/settings/quickmenu/PhabricatorQuickActions.php deleted file mode 100644 --- a/src/applications/settings/quickmenu/PhabricatorQuickActions.php +++ /dev/null @@ -1,54 +0,0 @@ -viewer = $viewer; - return $this; - } - - public function getViewer() { - return $this->viewer; - } - - public function isEnabled() { - return true; - } - - abstract public function getQuickMenuItems(); - - final public function getQuickActionsKey() { - return $this->getPhobjectClassConstant('QUICKACTIONSKEY'); - } - - public static function getAllQuickActions() { - return id(new PhutilClassMapQuery()) - ->setAncestorClass(__CLASS__) - ->setUniqueMethod('getQuickActionsKey') - ->execute(); - } - - public static function loadMenuItemsForUser(PhabricatorUser $viewer) { - $actions = self::getAllQuickActions(); - - foreach ($actions as $key => $action) { - $action->setViewer($viewer); - if (!$action->isEnabled()) { - unset($actions[$key]); - continue; - } - } - - $items = array(); - foreach ($actions as $key => $action) { - foreach ($action->getQuickMenuItems() as $item) { - $items[] = $item; - } - } - - return $items; - } - -} diff --git a/src/view/layout/PhabricatorActionListView.php b/src/view/layout/PhabricatorActionListView.php --- a/src/view/layout/PhabricatorActionListView.php +++ b/src/view/layout/PhabricatorActionListView.php @@ -1,6 +1,6 @@ id; } - public function render() { + protected function getTagName() { + return 'ul'; + } + + protected function getTagAttributes() { + $classes = array(); + $classes[] = 'phabricator-action-list-view'; + return array( + 'class' => implode(' ', $classes), + ); + } + + protected function getTagContent() { $viewer = $this->getViewer(); $event = new PhabricatorEvent( @@ -55,13 +67,7 @@ } } - return phutil_tag( - 'ul', - array( - 'class' => 'phabricator-action-list-view', - 'id' => $this->id, - ), - $items); + return $items; } public function getDropdownMenuMetadata() { diff --git a/src/view/layout/PhabricatorActionView.php b/src/view/layout/PhabricatorActionView.php --- a/src/view/layout/PhabricatorActionView.php +++ b/src/view/layout/PhabricatorActionView.php @@ -18,6 +18,13 @@ private $hidden; private $depth; private $id; + private $order; + private $color; + private $type; + + const TYPE_DIVIDER = 'type-divider'; + const TYPE_LABEL = 'label'; + const RED = 'action-item-red'; public function setSelected($selected) { $this->selected = $selected; @@ -51,6 +58,11 @@ return $this; } + public function setColor($color) { + $this->color = $color; + return $this; + } + public function addSigil($sigil) { $this->sigils[] = $sigil; return $this; @@ -114,6 +126,24 @@ return $this->id; } + public function setOrder($order) { + $this->order = $order; + return $this; + } + + public function getOrder() { + return $this->order; + } + + public function setType($type) { + $this->type = $type; + return $this; + } + + public function getType() { + return $this->type; + } + public function setSubmenu(array $submenu) { $this->submenu = $submenu; @@ -280,6 +310,18 @@ $classes[] = 'phabricator-action-view-href'; } + if ($this->icon) { + $classes[] = 'action-has-icon'; + } + + if ($this->color) { + $classes[] = $this->color; + } + + if ($this->type) { + $classes[] = 'phabricator-action-view-'.$this->type; + } + $style = array(); if ($this->hidden) { diff --git a/src/view/page/PhabricatorStandardPageView.php b/src/view/page/PhabricatorStandardPageView.php --- a/src/view/page/PhabricatorStandardPageView.php +++ b/src/view/page/PhabricatorStandardPageView.php @@ -769,7 +769,7 @@ $rendered_dropdowns = array(); $applications = array( - 'PhabricatorHelpApplication', + 'PhabricatorHomeApplication', ); foreach ($applications as $application_class) { if (!PhabricatorApplication::isClassInstalledForViewer( @@ -778,10 +778,9 @@ continue; } $application = PhabricatorApplication::getByClass($application_class); - $rendered_dropdowns[$application_class] = - $application->buildMainMenuExtraNodes( - $viewer, - $controller); + $menu = $application->buildMainMenuExtraNodes($viewer, $controller); + // TODO: Doesn't work with Quicksand active. + $rendered_dropdowns[$application_class] = hsprintf('%s', $menu); } $hisec_warning_config = $this->getHighSecurityWarningConfig(); diff --git a/src/view/page/menu/PhabricatorMainMenuSearchView.php b/src/view/page/menu/PhabricatorMainMenuSearchView.php --- a/src/view/page/menu/PhabricatorMainMenuSearchView.php +++ b/src/view/page/menu/PhabricatorMainMenuSearchView.php @@ -99,8 +99,10 @@ 'id' => $button_id, 'class' => 'phui-icon-view phui-font-fa fa-search', ), - $search_text), - $selector, + array( + $selector, + $search_text, + )), $primary_input, $target, ))); @@ -118,7 +120,7 @@ $items[] = array( 'icon' => 'fa-globe', - 'name' => pht('Search All Documents'), + 'name' => pht('All Documents'), 'value' => 'all', ); @@ -134,7 +136,7 @@ $items[] = array( 'icon' => $application_icon, - 'name' => pht('Search Current Application'), + 'name' => pht('Current Application'), 'value' => PhabricatorSearchController::SCOPE_CURRENT_APPLICATION, ); diff --git a/src/view/page/menu/PhabricatorMainMenuView.php b/src/view/page/menu/PhabricatorMainMenuView.php --- a/src/view/page/menu/PhabricatorMainMenuView.php +++ b/src/view/page/menu/PhabricatorMainMenuView.php @@ -52,10 +52,10 @@ $alerts[] = $menu; } $menu_bar = array_merge($menu_bar, $dropdowns); - $app_button = $this->renderApplicationMenuButton($header_id); + $app_button = $this->renderApplicationMenuButton(); $search_button = $this->renderSearchMenuButton($header_id); } else { - $app_button = $this->renderApplicationMenuButton($header_id); + $app_button = $this->renderApplicationMenuButton(); if (PhabricatorEnv::getEnvConfig('policy.allow-public')) { $search_button = $this->renderSearchMenuButton($header_id); } @@ -82,27 +82,17 @@ phutil_implode_html(' ', $aural)); } + // Build out Header Menus $applications = PhabricatorApplication::getAllInstalledApplications(); $menus = array(); $controller = $this->getController(); foreach ($applications as $application) { - $app_actions = $application->buildMainMenuItems( - $viewer, - $controller); $app_extra = $application->buildMainMenuExtraNodes( $viewer, $controller); - - foreach ($app_actions as $action) { - $menus[] = id(new PHUIMainMenuView()) - ->setMenuBarItem($action) - ->setOrder($action->getOrder()); - } - if ($app_extra !== null) { - $menus[] = id(new PHUIMainMenuView()) - ->appendChild($app_extra); + $menus[] = $app_extra; } } @@ -126,26 +116,17 @@ } } + // Builds out "login" button foreach ($extensions as $extension) { foreach ($extension->buildMainMenus() as $menu) { $menus[] = $menu; } } - $menus = msort($menus, 'getOrder'); - $bar_items = array(); foreach ($menus as $menu) { $menu_bar[] = $menu; - - $item = $menu->getMenuBarItem(); - if ($item === null) { - continue; - } - - $bar_items[] = $item; } - $application_menu = $this->renderApplicationMenu($bar_items); $classes = array(); $classes[] = 'phabricator-main-menu'; $classes[] = 'phabricator-main-menu-background'; @@ -162,7 +143,6 @@ $this->renderPhabricatorLogo(), $alerts, $aural, - $application_menu, $search_menu, $menu_bar, )); @@ -218,53 +198,37 @@ return $result; } - public function renderApplicationMenuButton($header_id) { - $button_id = celerity_generate_unique_node_id(); - return javelin_tag( - 'a', - array( - 'class' => 'phabricator-main-menu-expand-button '. - 'phabricator-expand-search-menu', - 'sigil' => 'jx-toggle-class', - 'meta' => array( - 'map' => array( - $header_id => 'phabricator-application-menu-expanded', - $button_id => 'menu-icon-selected', - ), - ), - ), - phutil_tag( - 'span', - array( - 'class' => 'phabricator-menu-button-icon phui-icon-view '. - 'phui-font-fa fa-bars', - 'id' => $button_id, - ), - '')); + public function renderApplicationMenuButton() { + $dropdown = $this->renderApplicationMenu(); + if (!$dropdown) { + return null; + } + + return id(new PHUIButtonView()) + ->setTag('a') + ->setHref('#') + ->setIcon('fa-bars') + ->addClass('phabricator-core-user-menu') + ->addClass('phabricator-core-user-mobile-menu') + ->setNoCSS(true) + ->setDropdownMenu($dropdown); } - private function renderApplicationMenu(array $bar_items) { + private function renderApplicationMenu() { $viewer = $this->getViewer(); - $view = $this->getApplicationMenu(); - - if (!$view) { - $view = new PHUIListView(); - } - - $view->addClass('phabricator-dark-menu'); - $view->addClass('phabricator-application-menu'); - - if ($bar_items) { - $view->addMenuItem( - id(new PHUIListItemView()) - ->setType(PHUIListItemView::TYPE_LABEL) - ->setName(pht('Actions'))); - foreach ($bar_items as $bar_item) { - $view->addMenuItem($bar_item); + if ($view) { + $items = $view->getItems(); + $view = id(new PhabricatorActionListView()) + ->setViewer($viewer); + foreach ($items as $item) { + $view->addAction( + id(new PhabricatorActionView()) + ->setName($item->getName()) + ->setHref($item->getHref()) + ->setType($item->getType())); } } - return $view; } @@ -296,7 +260,6 @@ private function renderPhabricatorSearchMenu() { $view = new PHUIListView(); - $view->addClass('phabricator-dark-menu'); $view->addClass('phabricator-search-menu'); $search = $this->renderSearch(); diff --git a/src/view/phui/PHUIButtonView.php b/src/view/phui/PHUIButtonView.php --- a/src/view/phui/PHUIButtonView.php +++ b/src/view/phui/PHUIButtonView.php @@ -27,6 +27,7 @@ private $disabled; private $name; private $tooltip; + private $noCSS; public function setName($name) { $this->name = $name; @@ -87,6 +88,11 @@ return $this; } + public function setNoCSS($no_css) { + $this->noCSS = $no_css; + return $this; + } + public function setIcon($icon, $first = true) { if (!($icon instanceof PHUIIconView)) { $icon = id(new PHUIIconView()) @@ -164,6 +170,10 @@ ); } + if ($this->noCSS) { + $classes = array(); + } + return array( 'class' => $classes, 'href' => $this->href, 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 @@ -202,7 +202,7 @@ } return array( - 'class' => $classes, + 'class' => implode(' ', $classes), ); } @@ -249,7 +249,7 @@ $name = phutil_tag( 'span', array( - 'class' => implode(' ', $classes), + 'class' => $classes, ), array( $this->name, diff --git a/src/view/phui/PHUIMainMenuView.php b/src/view/phui/PHUIMainMenuView.php deleted file mode 100644 --- a/src/view/phui/PHUIMainMenuView.php +++ /dev/null @@ -1,31 +0,0 @@ -menuItem = $menu_item; - return $this; - } - - public function getMenuBarItem() { - return $this->menuItem; - } - - public function setOrder($order) { - $this->order = $order; - return $this; - } - - public function getOrder() { - return $this->order; - } - - public function render() { - return $this->renderChildren(); - } - -} diff --git a/src/view/phui/PHUITimelineEventView.php b/src/view/phui/PHUITimelineEventView.php --- a/src/view/phui/PHUITimelineEventView.php +++ b/src/view/phui/PHUITimelineEventView.php @@ -606,8 +606,8 @@ $items[] = id(new PhabricatorActionView()) ->setIcon('fa-quote-left') + ->setName(pht('Quote Comment')) ->setHref('#') - ->setName(pht('Quote')) ->addSigil('transaction-quote') ->setMetadata( array( @@ -619,9 +619,9 @@ if ($this->getIsNormalComment()) { $items[] = id(new PhabricatorActionView()) - ->setIcon('fa-cutlery') + ->setIcon('fa-code') ->setHref('/transactions/raw/'.$xaction_phid.'/') - ->setName(pht('View Raw')) + ->setName(pht('View Remarkup')) ->addSigil('transaction-raw') ->setMetadata( array( @@ -648,9 +648,13 @@ if ($this->getIsRemovable()) { $items[] = id(new PhabricatorActionView()) - ->setIcon('fa-times') + ->setType(PhabricatorActionView::TYPE_DIVIDER); + + $items[] = id(new PhabricatorActionView()) + ->setIcon('fa-trash-o') ->setHref('/transactions/remove/'.$xaction_phid.'/') ->setName(pht('Remove Comment')) + ->setColor(PhabricatorActionView::RED) ->addSigil('transaction-remove') ->setMetadata( array( 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 @@ -63,7 +63,7 @@ } .device-phone .phabricator-wordmark { - max-width: 112px; /* iPhone 5 limitation */ + display: none; } .phabricator-wordmark { @@ -119,7 +119,7 @@ */ .device-desktop .phabricator-main-menu-search { - width: 220px; + width: 298px; } .device .phabricator-main-menu-search { @@ -130,7 +130,7 @@ padding: 8px 0; position: relative; height: 24px; - margin: 0 8px; + margin: 0 8px 0 0; } .phabricator-main-menu-search-target { @@ -150,6 +150,7 @@ .device .phabricator-main-menu-search-container { padding: 4px 0; + margin: 0 4px; } .phabricator-main-menu .phabricator-main-menu-search input { @@ -169,9 +170,9 @@ border-style: solid; background-color: #fff; height: 28px; - padding: 3px 30px 3px 6px; + padding: 3px 28px 3px 52px; float: left; - width: 205px; + width: 280px; } .device .phabricator-main-menu-search input { @@ -196,7 +197,7 @@ .phabricator-main-menu-search button { color: {$bluetext}; position: absolute; - background: {$greybackground}; + background: transparent; border: none; outline: none; box-shadow: none; @@ -204,7 +205,7 @@ min-width: 0; height: 24px; width: 28px; - top: 10px; + top: 9px; right: -6px; margin: 0 8px 0 0; padding: 0; @@ -214,20 +215,22 @@ .phabricator-main-menu-search button.phabricator-main-menu-search-dropdown { position: absolute; right: auto; - left: -45px; - width: 40px; - background: transparent; + left: 12px; + width: 46px; + background: {$greybackground}; + z-index: 1; } .device-desktop .phabricator-main-menu-search button.phabricator-main-menu-search-dropdown { - height: 28px; - top: 8px; + height: 24px; + top: 10px; + border-radius: 3px; } .device-desktop .phabricator-main-menu-search button.phabricator-main-menu-search-dropdown:hover .phui-icon-view { - color: #fff; + color: {$sky}; } .device .phabricator-main-menu-search @@ -236,34 +239,24 @@ background: {$greybackground}; } -button.phabricator-main-menu-search-dropdown .caret:before { +button.phabricator-main-menu-search-dropdown .caret:before, +a.phabricator-core-user-menu .caret:before { content: "\f107"; font-family: FontAwesome; - color: {$hoverwhite}; } .phabricator-main-menu-search button.phabricator-main-menu-search-dropdown .phui-icon-view { - color: {$hoverwhite}; + color: {$bluetext}; font-size: 15px; - top: 6px; + top: 4px; left: 8px; } -.device - .phabricator-main-menu-search button.phabricator-main-menu-search-dropdown - .phui-icon-view { - color: {$bluetext}; -} - -.device button.phabricator-main-menu-search-dropdown .caret:before { - color: {$bluetext}; -} - .phabricator-main-menu-search-dropdown .caret { position: absolute; - right: 15px; - top: 5px; + right: 18px; + top: 2px; border: none; margin-top: 1px; } @@ -284,7 +277,7 @@ word-wrap: break-word; overflow-y: auto; box-shadow: {$dropshadow}; - border: 1px solid {$blueborder}; + border: 1px solid {$lightgreyborder}; border-radius: 3px; margin-left: 40px; } @@ -339,12 +332,6 @@ font-size: {$normalfontsize}; } -.device .phabricator-dark-menu .phui-list-item-type-link - .phabricator-main-search-typeahead-result { - line-height: 18px; -} - - /* - Alert --------------------------------------------------------------------- @@ -442,36 +429,6 @@ display: block; } -/* - Dark Menu ----------------------------------------------------------------- - - Styles shared between the "core" menu (left button on mobile) and - "application" menu (right button on mobile). These styles give the menu a - white-on-black appearance. - -*/ - -.device .phabricator-dark-menu, -.device .phabricator-dark-menu a.phui-list-item-href { - color: {$darkbluetext}; - -webkit-font-smoothing: antialiased; -} - -.device .phabricator-dark-menu .phui-list-item-type-label { - text-transform: uppercase; - font-size: {$normalfontsize}; - background-color: #fff; - padding: 6px 0 6px 12px; - display: block; - font-weight: bold; - color: #000; -} - -.device .phabricator-dark-menu .phui-list-item-href { - background-color: #fff; - padding: 4px 0 4px 20px; - display: block; -} - /* - Core Menu ----------------------------------------------------------------- @@ -479,10 +436,6 @@ */ -.phabricator-core-menu-profile-image { - background-size: 28px 28px; -} - .device .phabricator-search-menu { display: none; } @@ -500,12 +453,7 @@ border: 1px solid {$lightblueborder}; border-radius: 3px; box-shadow: {$dropshadow}; -} - -.device .phabricator-dark-menu .phui-list-item-type-link { - min-height: 24px; - line-height: 20px; - background: #fff; + background: {$page.background}; } .device-desktop .phabricator-application-menu { @@ -531,12 +479,6 @@ vertical-align: middle; } -.device .phabricator-dark-menu.phabricator-application-menu - .phui-list-item-icon.phui-font-fa, -.device .phabricator-dark-menu .phabricator-core-menu-icon { - display: none; -} - .device .phabricator-application-menu .phui-list-item-icon.phui-font-fa { margin: 4px 12px 4px 0; } @@ -606,29 +548,85 @@ padding-left: 12px; } +/* - User Menu ----------------------------------------------------------------- -/* - Application Menu ---------------------------------------------------------- - - Styles unique to the application menu (right button on mobile). + Styles unique to the user profile menu. */ -.device .phabricator-application-menu-expanded .phabricator-application-menu { - display: block; +.phabricator-core-user-menu { + float: right; + display: inline-block; + padding: 9px 24px 0 8px; + height: 35px; + position: relative; +} + +.phabricator-core-user-mobile-menu { + display: none; +} + +.phabricator-core-user-menu span.phui-icon-view.phuihead-small { + height: 24px; + width: 24px; + background-size: 24px; + border-radius: 3px; + display: inline-block; + margin: 1px 0 0 0; +} + +.phabricator-core-user-menu .phui-icon-view { + color: {$hoverwhite}; + font-size: 18px; + margin: 4px 0 0 0; +} + +.phabricator-core-user-menu .caret { position: absolute; - border: 1px solid {$blueborder}; + right: 17px; + top: 13px; + border: none; + margin: 1px; + color: {$hoverwhite}; +} + +.phabricator-core-login-button { + float: right; + display: inline-block; + padding: 4px 12px; border-radius: 3px; - box-shadow: {$dropshadow}; - top: 42px; - right: 8px; - width: 240px; + margin: 8px 6px 4px; + border: 1px solid {$hoverwhite}; + color: {$hoverwhite}; +} + +.device-desktop .phabricator-core-login-button:hover { + border: 1px solid #fff; + color: #fff; } -.device .phabricator-application-menu, -.device-desktop .phabricator-dark-menu .phui-list-item-type-label { +.device-desktop .phabricator-core-user-menu:hover .caret, +.device-desktop .phabricator-core-user-menu:hover .phui-icon-view { + color: #fff; +} + +.device .phabricator-core-user-menu .caret { display: none; } +.device .phabricator-core-user-mobile-menu { + display: block; +} + +.device .phabricator-core-user-menu { + padding: 9px 8px 0 8px; +} + +.device .phabricator-core-user-menu .phui-icon-view { + font-size: 20px; + margin: 3px 0 0 0; +} + /* - Print --------------------------------------------------------------------- */ diff --git a/webroot/rsrc/css/application/base/notification-menu.css b/webroot/rsrc/css/application/base/notification-menu.css --- a/webroot/rsrc/css/application/base/notification-menu.css +++ b/webroot/rsrc/css/application/base/notification-menu.css @@ -8,7 +8,7 @@ word-wrap: break-word; overflow-y: auto; box-shadow: {$dropshadow}; - border: 1px solid {$blueborder}; + border: 1px solid {$lightgreyborder}; border-radius: 3px; } diff --git a/webroot/rsrc/css/phui/phui-action-list.css b/webroot/rsrc/css/phui/phui-action-list.css --- a/webroot/rsrc/css/phui/phui-action-list.css +++ b/webroot/rsrc/css/phui/phui-action-list.css @@ -11,6 +11,7 @@ /* When an action list view appears inside a dropdown menu, don't hide it by default. */ display: block; + padding: 0; } .device .phabricator-action-list-view.phabricator-action-list-toggle, @@ -18,7 +19,7 @@ .phabricator-action-list-view.phabricator-action-list-toggle { display: block; width: 200px; - border: 1px solid {$lightblueborder}; + border: 1px solid {$lightgreyborder}; border-radius: 3px; position: absolute; right: 16px; @@ -58,18 +59,49 @@ .phabricator-action-view button.phabricator-action-view-item, .phabricator-action-view-item { - padding: 4px 4px 4px 28px; + padding: 4px 8px 6px 8px; display: block; text-decoration: none; color: {$darkbluetext}; } -.phabricator-action-view-label .phabricator-action-view-item { - font-size: {$normalfontsize}; +.action-has-icon button.phabricator-action-view-item, +.action-has-icon .phabricator-action-view-item { + padding: 4px 4px 4px 28px; +} + +.device-desktop .phabricator-action-view-href:hover + .phabricator-action-view-item { + text-decoration: none; + background: rgba({$alphablue}, .08); + color: {$sky}; + border-radius: 3px; +} + +.device-desktop .phabricator-action-view-href:hover + .phabricator-action-view-icon { + color: {$sky}; +} + +.device-desktop .phabricator-action-view-href.action-item-red:hover + .phabricator-action-view-item { + background-color: {$sh-redbackground}; + color: {$sh-redtext}; +} + +.device-desktop .phabricator-action-view-href.action-item-red:hover + .phabricator-action-view-icon { + color: {$red}; +} + +.phabricator-action-view-label .phabricator-action-view-item, +.phabricator-action-view-type-label .phabricator-action-view-item { + font-size: {$smallerfontsize}; font-weight: bold; color: {$bluetext}; padding: 4px 8px 6px 8px; display: block; + text-transform: uppercase; -webkit-font-smoothing: antialiased; } @@ -87,37 +119,23 @@ width: 14px; height: 14px; position: absolute; - top: 8px; + top: 7px; left: 8px; text-align: center; } -.device-desktop .phabricator-action-view:hover .phabricator-action-view-item { - text-decoration: none; - background-color: {$sky}; - color: #fff; -} - -.device-desktop .phabricator-action-view:hover .phabricator-action-view-icon { - color: #fff; -} - .phabricator-action-view-disabled .phabricator-action-view-item, .phabricator-action-view-disabled button.phabricator-action-view-item { color: {$lightgreytext}; } .phabricator-action-view-selected { - border-left: 3px solid {$sky}; - background: {$hoverblue}; -} - -.phabricator-action-view-selected .phabricator-action-view-item { - padding-left: 25px; + background: {$sh-violetbackground}; + border-radius: 3px; } -.phabricator-action-view-selected .phabricator-action-view-icon { - left: 6px; +.phabricator-action-view-selected:hover a { + text-decoration: none; } .phabricator-action-view button[disabled] { @@ -135,3 +153,8 @@ background-color: {$greybackground}; color: {$lightgreytext}; } + +.phabricator-action-view-type-divider { + margin-top: 8px; + border-top: 1px solid {$thinblueborder}; +} diff --git a/webroot/rsrc/css/phui/phui-button.css b/webroot/rsrc/css/phui/phui-button.css --- a/webroot/rsrc/css/phui/phui-button.css +++ b/webroot/rsrc/css/phui/phui-button.css @@ -198,12 +198,12 @@ .phuix-dropdown-menu { position: absolute; - width: 240px; + width: 200px; background: #fff; margin-top: -1px; - padding: 5px 0; + padding: 12px; box-shadow: {$dropshadow}; - border: 1px solid {$blueborder}; + border: 1px solid {$lightgreyborder}; border-radius: 3px; margin-bottom: 16px; } diff --git a/webroot/rsrc/css/phui/phui-document-pro.css b/webroot/rsrc/css/phui/phui-document-pro.css --- a/webroot/rsrc/css/phui/phui-document-pro.css +++ b/webroot/rsrc/css/phui/phui-document-pro.css @@ -80,7 +80,7 @@ .phui-document-view-pro .phui-document-toc-list { margin: 8px; - border: 1px solid {$blueborder}; + border: 1px solid {$lightgreyborder}; border-radius: 3px; box-shadow: {$dropshadow}; width: 200px; diff --git a/webroot/rsrc/css/phui/phui-form-view.css b/webroot/rsrc/css/phui/phui-form-view.css --- a/webroot/rsrc/css/phui/phui-form-view.css +++ b/webroot/rsrc/css/phui/phui-form-view.css @@ -460,8 +460,7 @@ .fancy-datepicker-core { background-color: white; - border: 1px solid {$lightblueborder}; - border-bottom: 1px solid {$blueborder}; + border: 1px solid {$lightgreyborder}; box-shadow: {$dropshadow}; border-radius: 3px; } diff --git a/webroot/rsrc/css/phui/phui-two-column-view.css b/webroot/rsrc/css/phui/phui-two-column-view.css --- a/webroot/rsrc/css/phui/phui-two-column-view.css +++ b/webroot/rsrc/css/phui/phui-two-column-view.css @@ -159,24 +159,6 @@ padding: 0 12px; } -.phabricator-action-view button.phabricator-action-view-item, -.phabricator-action-view-item { - padding: 5px 4px 5px 28px; -} - -.device-desktop .phui-two-column-properties .phabricator-action-view-href:hover - .phabricator-action-view-item { - text-decoration: none; - background-color: rgba({$alphablue}, .08); - color: {$sky}; - border-radius: 3px; -} - -.device-desktop .phui-two-column-properties .phabricator-action-view-href:hover - .phabricator-action-view-icon { - color: {$sky}; -} - .phui-two-column-view .phui-property-list-section-header, .phui-two-column-view .phui-property-list-text-content { margin: 0 16px; @@ -199,6 +181,10 @@ padding: 12px; } +.phui-two-column-view .phui-oi-empty .phui-info-view { + margin: 0; +} + .phui-two-column-view .phui-side-column .phui-oi-empty .phui-info-view { margin-bottom: 0; diff --git a/webroot/rsrc/js/phuix/PHUIXActionView.js b/webroot/rsrc/js/phuix/PHUIXActionView.js --- a/webroot/rsrc/js/phuix/PHUIXActionView.js +++ b/webroot/rsrc/js/phuix/PHUIXActionView.js @@ -77,15 +77,24 @@ getNode: function() { if (!this._node) { - var attr = { - className: 'phabricator-action-view' - }; + var classes = ['phabricator-action-view']; + + if (this._href || this._handler) { + classes.push('phabricator-action-view-href'); + } + + if (this._icon) { + classes.push('action-has-icon'); + } var content = [ this._buildIconNode(), this._buildNameNode() ]; + var attr = { + className: classes.join(' ') + }; this._node = JX.$N('li', attr, content); }