@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Redesign Config Application

Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.

Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin

Maniphest Tasks: T11132

Differential Revision: https://secure.phabricator.com/D16468

+505 -460
+9 -7
resources/celerity/map.php
··· 7 7 */ 8 8 return array( 9 9 'names' => array( 10 - 'core.pkg.css' => '7d178771', 10 + 'core.pkg.css' => 'ffbade6c', 11 11 'core.pkg.js' => '2b8af4e4', 12 12 'darkconsole.pkg.js' => 'e7393ebb', 13 13 'differential.pkg.css' => '3fb7f532', ··· 36 36 'rsrc/css/application/base/notification-menu.css' => 'b3ab500d', 37 37 'rsrc/css/application/base/phabricator-application-launch-view.css' => '95351601', 38 38 'rsrc/css/application/base/phui-theme.css' => '027ba77e', 39 - 'rsrc/css/application/base/standard-page-view.css' => '99a7d403', 39 + 'rsrc/css/application/base/standard-page-view.css' => '2b592894', 40 40 'rsrc/css/application/chatlog/chatlog.css' => 'd295b020', 41 41 'rsrc/css/application/conduit/conduit-api.css' => '7bc725c4', 42 42 'rsrc/css/application/config/config-options.css' => '0ede4c9b', 43 + 'rsrc/css/application/config/config-page.css' => '8798e14f', 43 44 'rsrc/css/application/config/config-template.css' => '8e6c6fcd', 44 45 'rsrc/css/application/config/config-welcome.css' => '035aa483', 45 46 'rsrc/css/application/config/setup-issue.css' => 'f794cfc3', ··· 112 113 'rsrc/css/font/font-aleo.css' => '8bdb2835', 113 114 'rsrc/css/font/font-awesome.css' => '2b7ebbcc', 114 115 'rsrc/css/font/font-lato.css' => 'c7ccd872', 115 - 'rsrc/css/font/phui-font-icon-base.css' => '4e8274c4', 116 + 'rsrc/css/font/phui-font-icon-base.css' => '870a7360', 116 117 'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82', 117 118 'rsrc/css/layout/phabricator-source-code-view.css' => 'cbeef983', 118 119 'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893', ··· 147 148 'rsrc/css/phui/phui-info-view.css' => '28efab79', 148 149 'rsrc/css/phui/phui-list.css' => '9da2aa00', 149 150 'rsrc/css/phui/phui-object-box.css' => '6b487c57', 150 - 'rsrc/css/phui/phui-object-item-list-view.css' => '985e9d54', 151 + 'rsrc/css/phui/phui-object-item-list-view.css' => '987db9bf', 151 152 'rsrc/css/phui/phui-pager.css' => 'bea33d23', 152 153 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e', 153 154 'rsrc/css/phui/phui-profile-menu.css' => '8a3fc181', ··· 547 548 'changeset-view-manager' => 'a2828756', 548 549 'conduit-api-css' => '7bc725c4', 549 550 'config-options-css' => '0ede4c9b', 551 + 'config-page-css' => '8798e14f', 550 552 'config-welcome-css' => '035aa483', 551 553 'conpherence-durable-column-view' => '86396117', 552 554 'conpherence-menu-css' => '90bdf85c', ··· 797 799 'phabricator-shaped-request' => '7cbe244b', 798 800 'phabricator-slowvote-css' => 'a94b7230', 799 801 'phabricator-source-code-view-css' => 'cbeef983', 800 - 'phabricator-standard-page-view' => '99a7d403', 802 + 'phabricator-standard-page-view' => '2b592894', 801 803 'phabricator-textareautils' => '320810c8', 802 804 'phabricator-title' => 'df5e11d2', 803 805 'phabricator-tooltip' => '6323f942', ··· 840 842 'phui-document-view-css' => 'c32e8dec', 841 843 'phui-document-view-pro-css' => 'dc3d46ed', 842 844 'phui-feed-story-css' => 'aa49845d', 843 - 'phui-font-icon-base-css' => '4e8274c4', 845 + 'phui-font-icon-base-css' => '870a7360', 844 846 'phui-fontkit-css' => '9cda225e', 845 847 'phui-form-css' => 'aac1d51d', 846 848 'phui-form-view-css' => '76b4a46c', ··· 856 858 'phui-inline-comment-view-css' => '5953c28e', 857 859 'phui-list-view-css' => '9da2aa00', 858 860 'phui-object-box-css' => '6b487c57', 859 - 'phui-object-item-list-view-css' => '985e9d54', 861 + 'phui-object-item-list-view-css' => '987db9bf', 860 862 'phui-pager-css' => 'bea33d23', 861 863 'phui-pinboard-view-css' => '2495140e', 862 864 'phui-profile-menu-css' => '8a3fc181',
+6 -4
src/__phutil_library_map__.php
··· 2149 2149 'PhabricatorConfigCollectorsModule' => 'applications/config/module/PhabricatorConfigCollectorsModule.php', 2150 2150 'PhabricatorConfigColumnSchema' => 'applications/config/schema/PhabricatorConfigColumnSchema.php', 2151 2151 'PhabricatorConfigConfigPHIDType' => 'applications/config/phid/PhabricatorConfigConfigPHIDType.php', 2152 + 'PhabricatorConfigConstants' => 'applications/config/constants/PhabricatorConfigConstants.php', 2152 2153 'PhabricatorConfigController' => 'applications/config/controller/PhabricatorConfigController.php', 2153 2154 'PhabricatorConfigCoreSchemaSpec' => 'applications/config/schema/PhabricatorConfigCoreSchemaSpec.php', 2154 2155 'PhabricatorConfigDatabaseController' => 'applications/config/controller/PhabricatorConfigDatabaseController.php', ··· 2165 2166 'PhabricatorConfigEntryDAO' => 'applications/config/storage/PhabricatorConfigEntryDAO.php', 2166 2167 'PhabricatorConfigEntryQuery' => 'applications/config/query/PhabricatorConfigEntryQuery.php', 2167 2168 'PhabricatorConfigFileSource' => 'infrastructure/env/PhabricatorConfigFileSource.php', 2169 + 'PhabricatorConfigGroupConstants' => 'applications/config/constants/PhabricatorConfigGroupConstants.php', 2168 2170 'PhabricatorConfigGroupController' => 'applications/config/controller/PhabricatorConfigGroupController.php', 2169 2171 'PhabricatorConfigHTTPParameterTypesModule' => 'applications/config/module/PhabricatorConfigHTTPParameterTypesModule.php', 2170 2172 'PhabricatorConfigHistoryController' => 'applications/config/controller/PhabricatorConfigHistoryController.php', ··· 2188 2190 'PhabricatorConfigOption' => 'applications/config/option/PhabricatorConfigOption.php', 2189 2191 'PhabricatorConfigOptionType' => 'applications/config/custom/PhabricatorConfigOptionType.php', 2190 2192 'PhabricatorConfigPHIDModule' => 'applications/config/module/PhabricatorConfigPHIDModule.php', 2193 + 'PhabricatorConfigPageView' => 'applications/config/view/PhabricatorConfigPageView.php', 2191 2194 'PhabricatorConfigProxySource' => 'infrastructure/env/PhabricatorConfigProxySource.php', 2192 2195 'PhabricatorConfigPurgeCacheController' => 'applications/config/controller/PhabricatorConfigPurgeCacheController.php', 2193 2196 'PhabricatorConfigRequestExceptionHandlerModule' => 'applications/config/module/PhabricatorConfigRequestExceptionHandlerModule.php', ··· 2649 2652 'PhabricatorHandleRemarkupRule' => 'applications/phid/remarkup/PhabricatorHandleRemarkupRule.php', 2650 2653 'PhabricatorHandlesEditField' => 'applications/transactions/editfield/PhabricatorHandlesEditField.php', 2651 2654 'PhabricatorHarbormasterApplication' => 'applications/harbormaster/application/PhabricatorHarbormasterApplication.php', 2652 - 'PhabricatorHarbormasterConfigOptions' => 'applications/harbormaster/config/PhabricatorHarbormasterConfigOptions.php', 2653 2655 'PhabricatorHash' => 'infrastructure/util/PhabricatorHash.php', 2654 2656 'PhabricatorHashTestCase' => 'infrastructure/util/__tests__/PhabricatorHashTestCase.php', 2655 2657 'PhabricatorHelpApplication' => 'applications/help/application/PhabricatorHelpApplication.php', ··· 3158 3160 'PhabricatorPhortuneManagementWorkflow' => 'applications/phortune/management/PhabricatorPhortuneManagementWorkflow.php', 3159 3161 'PhabricatorPhragmentApplication' => 'applications/phragment/application/PhabricatorPhragmentApplication.php', 3160 3162 'PhabricatorPhrequentApplication' => 'applications/phrequent/application/PhabricatorPhrequentApplication.php', 3161 - 'PhabricatorPhrequentConfigOptions' => 'applications/phrequent/config/PhabricatorPhrequentConfigOptions.php', 3162 3163 'PhabricatorPhrictionApplication' => 'applications/phriction/application/PhabricatorPhrictionApplication.php', 3163 3164 'PhabricatorPhrictionConfigOptions' => 'applications/phriction/config/PhabricatorPhrictionConfigOptions.php', 3164 3165 'PhabricatorPhurlApplication' => 'applications/phurl/application/PhabricatorPhurlApplication.php', ··· 6891 6892 'PhabricatorConfigCollectorsModule' => 'PhabricatorConfigModule', 6892 6893 'PhabricatorConfigColumnSchema' => 'PhabricatorConfigStorageSchema', 6893 6894 'PhabricatorConfigConfigPHIDType' => 'PhabricatorPHIDType', 6895 + 'PhabricatorConfigConstants' => 'Phobject', 6894 6896 'PhabricatorConfigController' => 'PhabricatorController', 6895 6897 'PhabricatorConfigCoreSchemaSpec' => 'PhabricatorConfigSchemaSpec', 6896 6898 'PhabricatorConfigDatabaseController' => 'PhabricatorConfigController', ··· 6911 6913 'PhabricatorConfigEntryDAO' => 'PhabricatorLiskDAO', 6912 6914 'PhabricatorConfigEntryQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 6913 6915 'PhabricatorConfigFileSource' => 'PhabricatorConfigProxySource', 6916 + 'PhabricatorConfigGroupConstants' => 'PhabricatorConfigConstants', 6914 6917 'PhabricatorConfigGroupController' => 'PhabricatorConfigController', 6915 6918 'PhabricatorConfigHTTPParameterTypesModule' => 'PhabricatorConfigModule', 6916 6919 'PhabricatorConfigHistoryController' => 'PhabricatorConfigController', ··· 6937 6940 ), 6938 6941 'PhabricatorConfigOptionType' => 'Phobject', 6939 6942 'PhabricatorConfigPHIDModule' => 'PhabricatorConfigModule', 6943 + 'PhabricatorConfigPageView' => 'AphrontTagView', 6940 6944 'PhabricatorConfigProxySource' => 'PhabricatorConfigSource', 6941 6945 'PhabricatorConfigPurgeCacheController' => 'PhabricatorConfigController', 6942 6946 'PhabricatorConfigRequestExceptionHandlerModule' => 'PhabricatorConfigModule', ··· 7467 7471 'PhabricatorHandleRemarkupRule' => 'PhutilRemarkupRule', 7468 7472 'PhabricatorHandlesEditField' => 'PhabricatorPHIDListEditField', 7469 7473 'PhabricatorHarbormasterApplication' => 'PhabricatorApplication', 7470 - 'PhabricatorHarbormasterConfigOptions' => 'PhabricatorApplicationConfigOptions', 7471 7474 'PhabricatorHash' => 'Phobject', 7472 7475 'PhabricatorHashTestCase' => 'PhabricatorTestCase', 7473 7476 'PhabricatorHelpApplication' => 'PhabricatorApplication', ··· 8050 8053 'PhabricatorPhortuneManagementWorkflow' => 'PhabricatorManagementWorkflow', 8051 8054 'PhabricatorPhragmentApplication' => 'PhabricatorApplication', 8052 8055 'PhabricatorPhrequentApplication' => 'PhabricatorApplication', 8053 - 'PhabricatorPhrequentConfigOptions' => 'PhabricatorApplicationConfigOptions', 8054 8056 'PhabricatorPhrictionApplication' => 'PhabricatorApplication', 8055 8057 'PhabricatorPhrictionConfigOptions' => 'PhabricatorApplicationConfigOptions', 8056 8058 'PhabricatorPhurlApplication' => 'PhabricatorApplication',
+1 -5
src/applications/auth/engine/PhabricatorAuthSessionEngineExtensionModule.php
··· 25 25 ); 26 26 } 27 27 28 - $table = id(new AphrontTableView($rows)) 28 + return id(new AphrontTableView($rows)) 29 29 ->setNoDataString( 30 30 pht('There are no registered session engine extensions.')) 31 31 ->setHeaders( ··· 41 41 'wide pri', 42 42 )); 43 43 44 - return id(new PHUIObjectBoxView()) 45 - ->setHeaderText(pht('SessionEngine Extensions')) 46 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 47 - ->setTable($table); 48 44 } 49 45 50 46 }
+2 -6
src/applications/auth/tokentype/PhabricatorAuthTemporaryTokenTypeModule.php
··· 8 8 } 9 9 10 10 public function getModuleName() { 11 - return pht('Temporary Tokens'); 11 + return pht('Temporary Token Types'); 12 12 } 13 13 14 14 public function renderModuleStatus(AphrontRequest $request) { ··· 25 25 ); 26 26 } 27 27 28 - $table = id(new AphrontTableView($rows)) 28 + return id(new AphrontTableView($rows)) 29 29 ->setHeaders( 30 30 array( 31 31 pht('Class'), ··· 39 39 'wide pri', 40 40 )); 41 41 42 - return id(new PHUIObjectBoxView()) 43 - ->setHeaderText(pht('Temporary Token Types')) 44 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 45 - ->setTable($table); 46 42 } 47 43 48 44 }
+1 -1
src/applications/config/check/PhabricatorCacheSetupCheck.php
··· 3 3 final class PhabricatorCacheSetupCheck extends PhabricatorSetupCheck { 4 4 5 5 public function getDefaultGroup() { 6 - return self::GROUP_OTHER; 6 + return self::GROUP_PHP; 7 7 } 8 8 9 9 protected function executeChecks() {
+2 -4
src/applications/config/check/PhabricatorMySQLSetupCheck.php
··· 34 34 if ($max_allowed_packet < $recommended_minimum) { 35 35 $message = pht( 36 36 "MySQL is configured with a small '%s' (%d), ". 37 - "which may cause some large writes to fail. Strongly consider raising ". 38 - "this to at least %d in your MySQL configuration.", 37 + "which may cause some large writes to fail.", 39 38 'max_allowed_packet', 40 - $max_allowed_packet, 41 - $recommended_minimum); 39 + $max_allowed_packet); 42 40 43 41 $this->newIssue('mysql.max_allowed_packet') 44 42 ->setName(pht('Small MySQL "%s"', 'max_allowed_packet'))
+3
src/applications/config/constants/PhabricatorConfigConstants.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorConfigConstants extends Phobject {}
+37
src/applications/config/constants/PhabricatorConfigGroupConstants.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorConfigGroupConstants 4 + extends PhabricatorConfigConstants { 5 + 6 + const GROUP_CORE = 'core'; 7 + const GROUP_APPLICATION = 'apps'; 8 + const GROUP_DEVELOPER = 'developer'; 9 + 10 + public static function getGroupName($group) { 11 + $map = array( 12 + self::GROUP_CORE => pht('Core Settings'), 13 + self::GROUP_APPLICATION => pht('Application Settings'), 14 + self::GROUP_DEVELOPER => pht('Developer Settings'), 15 + ); 16 + return idx($map, $group, pht('Unknown')); 17 + } 18 + 19 + public static function getGroupShortName($group) { 20 + $map = array( 21 + self::GROUP_CORE => pht('Core'), 22 + self::GROUP_APPLICATION => pht('Application'), 23 + self::GROUP_DEVELOPER => pht('Developer'), 24 + ); 25 + return idx($map, $group, pht('Unknown')); 26 + } 27 + 28 + public static function getGroupURI($group) { 29 + $map = array( 30 + self::GROUP_CORE => '/', 31 + self::GROUP_APPLICATION => pht('application/'), 32 + self::GROUP_DEVELOPER => pht('developer/'), 33 + ); 34 + return idx($map, $group, '#'); 35 + } 36 + 37 + }
+11 -12
src/applications/config/controller/PhabricatorConfigAllController.php
··· 52 52 53 53 $crumbs = $this 54 54 ->buildApplicationCrumbs() 55 - ->addTextCrumb(pht('Configuration'), $this->getApplicationURI()) 56 - ->addTextCrumb($title); 55 + ->addTextCrumb($title) 56 + ->setBorder(true); 57 57 58 - $panel = id(new PHUIObjectBoxView()) 59 - ->setHeaderText(pht('Current Settings')) 60 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 61 - ->setTable($table); 58 + $header = id(new PHUIHeaderView()) 59 + ->setHeader($title) 60 + ->setProfileHeader(true); 62 61 63 62 $nav = $this->buildSideNavView(); 64 63 $nav->selectFilter('all/'); 65 64 66 - $view = id(new PHUITwoColumnView()) 67 - ->setNavigation($nav) 68 - ->setMainColumn(array( 69 - $panel, 70 - )); 65 + $content = id(new PhabricatorConfigPageView()) 66 + ->setHeader($header) 67 + ->setContent($table); 71 68 72 69 return $this->newPage() 73 70 ->setTitle($title) 74 71 ->setCrumbs($crumbs) 75 - ->appendChild($view); 72 + ->setNavigation($nav) 73 + ->appendChild($content) 74 + ->addClass('white-background'); 76 75 77 76 } 78 77
+17 -14
src/applications/config/controller/PhabricatorConfigApplicationController.php
··· 12 12 $groups = PhabricatorApplicationConfigOptions::loadAll(); 13 13 $apps_list = $this->buildConfigOptionsList($groups, 'apps'); 14 14 15 - $title = pht('Application Configuration'); 15 + $title = pht('Application Settings'); 16 16 17 - $apps = id(new PHUIObjectBoxView()) 18 - ->setHeaderText($title) 19 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 20 - ->setObjectList($apps_list); 17 + $header = id(new PHUIHeaderView()) 18 + ->setHeader($title) 19 + ->setProfileHeader(true); 21 20 22 21 $crumbs = $this 23 22 ->buildApplicationCrumbs() 24 - ->addTextCrumb(pht('Configuration'), $this->getApplicationURI()) 25 - ->addTextCrumb(pht('Applications')); 23 + ->addTextCrumb(pht('Applications')) 24 + ->setBorder(true); 26 25 27 - $view = id(new PHUITwoColumnView()) 28 - ->setNavigation($nav) 29 - ->setMainColumn(array( 30 - $apps, 31 - )); 26 + $content = id(new PhabricatorConfigPageView()) 27 + ->setHeader($header) 28 + ->setContent($apps_list); 32 29 33 30 return $this->newPage() 34 31 ->setTitle($title) 35 32 ->setCrumbs($crumbs) 36 - ->appendChild($view); 33 + ->setNavigation($nav) 34 + ->appendChild($content) 35 + ->addClass('white-background'); 37 36 } 38 37 39 38 private function buildConfigOptionsList(array $groups, $type) { 40 39 assert_instances_of($groups, 'PhabricatorApplicationConfigOptions'); 41 40 42 41 $list = new PHUIObjectItemListView(); 42 + $list->setBig(true); 43 43 $groups = msort($groups, 'getName'); 44 44 foreach ($groups as $group) { 45 45 if ($group->getGroup() == $type) { 46 + $icon = id(new PHUIIconView()) 47 + ->setIcon($group->getIcon()) 48 + ->setBackground('bg-violet'); 46 49 $item = id(new PHUIObjectItemView()) 47 50 ->setHeader($group->getName()) 48 51 ->setHref('/config/group/'.$group->getKey().'/') 49 52 ->addAttribute($group->getDescription()) 50 - ->setImageIcon($group->getIcon()); 53 + ->setImageIcon($icon); 51 54 $list->addItem($item); 52 55 } 53 56 }
+17 -8
src/applications/config/controller/PhabricatorConfigCacheController.php
··· 11 11 12 12 $title = pht('Cache Status'); 13 13 14 + $header = id(new PHUIHeaderView()) 15 + ->setHeader($title) 16 + ->setProfileHeader(true); 17 + 14 18 $crumbs = $this 15 19 ->buildApplicationCrumbs() 16 - ->addTextCrumb(pht('Cache Status')); 20 + ->addTextCrumb(pht('Cache Status')) 21 + ->setBorder(true); 17 22 18 23 $code_box = $this->renderCodeBox(); 19 24 $data_box = $this->renderDataBox(); 20 25 21 - $view = id(new PHUITwoColumnView()) 22 - ->setNavigation($nav) 23 - ->setMainColumn(array( 24 - $code_box, 25 - $data_box, 26 - )); 26 + $page = array( 27 + $code_box, 28 + $data_box, 29 + ); 30 + 31 + $content = id(new PhabricatorConfigPageView()) 32 + ->setHeader($header) 33 + ->setContent($page); 27 34 28 35 return $this->newPage() 29 36 ->setTitle($title) 30 37 ->setCrumbs($crumbs) 31 - ->appendChild($view); 38 + ->setNavigation($nav) 39 + ->appendChild($content) 40 + ->addClass('white-background'); 32 41 } 33 42 34 43 private function renderCodeBox() {
+21 -21
src/applications/config/controller/PhabricatorConfigClusterDatabasesController.php
··· 7 7 $nav = $this->buildSideNavView(); 8 8 $nav->selectFilter('cluster/databases/'); 9 9 10 - $title = pht('Database Servers'); 10 + $title = pht('Cluster Database Status'); 11 + $doc_href = PhabricatorEnv::getDoclink('Cluster: Databases'); 12 + 13 + $header = id(new PHUIHeaderView()) 14 + ->setHeader($title) 15 + ->setProfileHeader(true) 16 + ->addActionLink( 17 + id(new PHUIButtonView()) 18 + ->setIcon('fa-book') 19 + ->setHref($doc_href) 20 + ->setTag('a') 21 + ->setText(pht('Documentation'))); 11 22 12 23 $crumbs = $this 13 24 ->buildApplicationCrumbs($nav) 14 - ->addTextCrumb(pht('Database Servers')); 25 + ->addTextCrumb($title) 26 + ->setBorder(true); 15 27 16 28 $database_status = $this->buildClusterDatabaseStatus(); 17 29 18 - $view = id(new PHUITwoColumnView()) 19 - ->setNavigation($nav) 20 - ->setMainColumn($database_status); 30 + $content = id(new PhabricatorConfigPageView()) 31 + ->setHeader($header) 32 + ->setContent($database_status); 21 33 22 34 return $this->newPage() 23 35 ->setTitle($title) 24 36 ->setCrumbs($crumbs) 25 - ->appendChild($view); 37 + ->setNavigation($nav) 38 + ->appendChild($content) 39 + ->addClass('white-background'); 26 40 } 27 41 28 42 private function buildClusterDatabaseStatus() { ··· 194 208 'wide', 195 209 )); 196 210 197 - $doc_href = PhabricatorEnv::getDoclink('Cluster: Databases'); 198 - 199 - $header = id(new PHUIHeaderView()) 200 - ->setHeader(pht('Cluster Database Status')) 201 - ->addActionLink( 202 - id(new PHUIButtonView()) 203 - ->setIcon('fa-book') 204 - ->setHref($doc_href) 205 - ->setTag('a') 206 - ->setText(pht('Documentation'))); 207 - 208 - return id(new PHUIObjectBoxView()) 209 - ->setHeader($header) 210 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 211 - ->setTable($table); 211 + return $table; 212 212 } 213 213 214 214 }
+20 -20
src/applications/config/controller/PhabricatorConfigClusterNotificationsController.php
··· 8 8 $nav->selectFilter('cluster/notifications/'); 9 9 10 10 $title = pht('Cluster Notifications'); 11 + $doc_href = PhabricatorEnv::getDoclink('Cluster: Notifications'); 12 + 13 + $header = id(new PHUIHeaderView()) 14 + ->setHeader($title) 15 + ->setProfileHeader(true) 16 + ->addActionLink( 17 + id(new PHUIButtonView()) 18 + ->setIcon('fa-book') 19 + ->setHref($doc_href) 20 + ->setTag('a') 21 + ->setText(pht('Documentation'))); 11 22 12 23 $crumbs = $this 13 24 ->buildApplicationCrumbs($nav) 14 - ->addTextCrumb(pht('Cluster Notifications')); 25 + ->addTextCrumb($title) 26 + ->setBorder(true); 15 27 16 28 $notification_status = $this->buildClusterNotificationStatus(); 17 29 18 - $view = id(new PHUITwoColumnView()) 19 - ->setNavigation($nav) 20 - ->setMainColumn($notification_status); 30 + $content = id(new PhabricatorConfigPageView()) 31 + ->setHeader($header) 32 + ->setContent($notification_status); 21 33 22 34 return $this->newPage() 23 35 ->setTitle($title) 24 36 ->setCrumbs($crumbs) 25 - ->appendChild($view); 37 + ->setNavigation($nav) 38 + ->appendChild($content) 39 + ->addClass('white-background'); 26 40 } 27 41 28 42 private function buildClusterNotificationStatus() { ··· 144 158 'wide', 145 159 )); 146 160 147 - $doc_href = PhabricatorEnv::getDoclink('Cluster: Notifications'); 148 - 149 - $header = id(new PHUIHeaderView()) 150 - ->setHeader(pht('Cluster Notification Status')) 151 - ->addActionLink( 152 - id(new PHUIButtonView()) 153 - ->setIcon('fa-book') 154 - ->setHref($doc_href) 155 - ->setTag('a') 156 - ->setText(pht('Documentation'))); 157 - 158 - return id(new PHUIObjectBoxView()) 159 - ->setHeader($header) 160 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 161 - ->setTable($table); 161 + return $table; 162 162 } 163 163 164 164 }
+22 -24
src/applications/config/controller/PhabricatorConfigClusterRepositoriesController.php
··· 7 7 $nav = $this->buildSideNavView(); 8 8 $nav->selectFilter('cluster/repositories/'); 9 9 10 - $title = pht('Repository Servers'); 10 + $title = pht('Cluster Repository Status'); 11 + 12 + $doc_href = PhabricatorEnv::getDoclink('Cluster: Repositories'); 13 + 14 + $header = id(new PHUIHeaderView()) 15 + ->setHeader($title) 16 + ->setProfileHeader(true) 17 + ->addActionLink( 18 + id(new PHUIButtonView()) 19 + ->setIcon('fa-book') 20 + ->setHref($doc_href) 21 + ->setTag('a') 22 + ->setText(pht('Documentation'))); 11 23 12 24 $crumbs = $this 13 25 ->buildApplicationCrumbs($nav) 14 - ->addTextCrumb(pht('Repository Servers')); 26 + ->addTextCrumb(pht('Repository Servers')) 27 + ->setBorder(true); 15 28 16 29 $repository_status = $this->buildClusterRepositoryStatus(); 17 30 18 - $view = id(new PHUITwoColumnView()) 19 - ->setNavigation($nav) 20 - ->setMainColumn($repository_status); 31 + $content = id(new PhabricatorConfigPageView()) 32 + ->setHeader($header) 33 + ->setContent($repository_status); 21 34 22 35 return $this->newPage() 23 36 ->setTitle($title) 24 37 ->setCrumbs($crumbs) 25 - ->appendChild($view); 38 + ->setNavigation($nav) 39 + ->appendChild($content) 40 + ->addClass('white-background'); 26 41 } 27 42 28 43 private function buildClusterRepositoryStatus() { ··· 217 232 ); 218 233 } 219 234 220 - 221 - $table = id(new AphrontTableView($rows)) 235 + return id(new AphrontTableView($rows)) 222 236 ->setNoDataString( 223 237 pht('No repository cluster services are configured.')) 224 238 ->setHeaders( ··· 239 253 null, 240 254 'wide', 241 255 )); 242 - 243 - $doc_href = PhabricatorEnv::getDoclink('Cluster: Repositories'); 244 - 245 - $header = id(new PHUIHeaderView()) 246 - ->setHeader(pht('Cluster Repository Status')) 247 - ->addActionLink( 248 - id(new PHUIButtonView()) 249 - ->setIcon('fa-book') 250 - ->setHref($doc_href) 251 - ->setTag('a') 252 - ->setText(pht('Documentation'))); 253 - 254 - return id(new PHUIObjectBoxView()) 255 - ->setHeader($header) 256 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 257 - ->setTable($table); 258 256 } 259 257 260 258 private function getDevices(
-14
src/applications/config/controller/PhabricatorConfigDatabaseController.php
··· 60 60 } 61 61 } 62 62 63 - protected function buildHeaderWithDocumentationLink($title) { 64 - 65 - $doc_link = PhabricatorEnv::getDoclink('Managing Storage Adjustments'); 66 - 67 - return id(new PHUIHeaderView()) 68 - ->setHeader($title) 69 - ->addActionLink( 70 - id(new PHUIButtonView()) 71 - ->setTag('a') 72 - ->setIcon('fa-book') 73 - ->setHref($doc_link) 74 - ->setText(pht('Learn More'))); 75 - } 76 - 77 63 }
+12 -11
src/applications/config/controller/PhabricatorConfigDatabaseIssueController.php
··· 14 14 15 15 $crumbs = $this->buildApplicationCrumbs(); 16 16 $crumbs->addTextCrumb(pht('Database Issues')); 17 + $crumbs->setBorder(true); 17 18 18 19 // Collect all open issues. 19 20 $issues = array(); ··· 111 112 } 112 113 113 114 $table = id(new AphrontTableView($rows)) 115 + ->setNoDataString( 116 + pht('No databases have any issues.')) 114 117 ->setHeaders( 115 118 array( 116 119 null, ··· 146 149 147 150 $title = pht('Database Issues'); 148 151 149 - $table_box = id(new PHUIObjectBoxView()) 150 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 151 - ->setFormErrors($errors) 152 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 153 - ->setTable($table); 152 + $header = id(new PHUIHeaderView()) 153 + ->setHeader($title) 154 + ->setProfileHeader(true); 154 155 155 156 $nav = $this->buildSideNavView(); 156 157 $nav->selectFilter('dbissue/'); 157 158 158 - $view = id(new PHUITwoColumnView()) 159 - ->setNavigation($nav) 160 - ->setMainColumn(array( 161 - $table_box, 162 - )); 159 + $content = id(new PhabricatorConfigPageView()) 160 + ->setHeader($header) 161 + ->setContent($table); 163 162 164 163 return $this->newPage() 165 164 ->setTitle($title) 166 165 ->setCrumbs($crumbs) 167 - ->appendChild($view); 166 + ->setNavigation($nav) 167 + ->appendChild($content) 168 + ->addClass('white-background'); 168 169 } 169 170 170 171 }
+30 -57
src/applications/config/controller/PhabricatorConfigDatabaseStatusController.php
··· 62 62 $nav = $this->buildSideNavView(); 63 63 $nav->selectFilter('database/'); 64 64 65 + if (!$title) { 66 + $title = pht('Database Status'); 67 + } 68 + 65 69 $crumbs = $this->buildApplicationCrumbs(); 70 + $crumbs->setBorder(true); 66 71 if ($this->database) { 67 72 $crumbs->addTextCrumb( 68 73 pht('Database Status'), ··· 91 96 $crumbs->addTextCrumb(pht('Database Status')); 92 97 } 93 98 94 - $view = id(new PHUITwoColumnView()) 95 - ->setNavigation($nav) 96 - ->setMainColumn(array( 97 - $body, 98 - )); 99 + $doc_link = PhabricatorEnv::getDoclink('Managing Storage Adjustments'); 100 + 101 + $header = id(new PHUIHeaderView()) 102 + ->setHeader($title) 103 + ->setProfileHeader(true) 104 + ->addActionLink( 105 + id(new PHUIButtonView()) 106 + ->setTag('a') 107 + ->setIcon('fa-book') 108 + ->setHref($doc_link) 109 + ->setText(pht('Learn More'))); 110 + 111 + $content = id(new PhabricatorConfigPageView()) 112 + ->setHeader($header) 113 + ->setContent($body); 99 114 100 115 return $this->newPage() 101 116 ->setTitle($title) 102 117 ->setCrumbs($crumbs) 103 - ->appendChild($view); 118 + ->setNavigation($nav) 119 + ->appendChild($content) 120 + ->addClass('white-background'); 104 121 } 105 122 106 123 ··· 163 180 ), 164 181 $comp->getIssues()); 165 182 166 - $prop_box = id(new PHUIObjectBoxView()) 167 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 168 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 169 - ->addPropertyList($properties); 170 - 171 - $table_box = id(new PHUIObjectBoxView()) 172 - ->setHeaderText(pht('Databases')) 173 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 174 - ->setTable($table); 175 - 176 - return $this->buildResponse($title, array($prop_box, $table_box)); 183 + return $this->buildResponse($title, array($properties, $table)); 177 184 } 178 185 179 186 private function renderDatabase( ··· 263 270 ), 264 271 $database->getIssues()); 265 272 266 - $prop_box = id(new PHUIObjectBoxView()) 267 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 268 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 269 - ->addPropertyList($properties); 270 - 271 - $table_box = id(new PHUIObjectBoxView()) 272 - ->setHeaderText(pht('Database Status')) 273 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 274 - ->setTable($table); 275 - 276 - return $this->buildResponse($title, array($prop_box, $table_box)); 273 + return $this->buildResponse($title, array($properties, $table)); 277 274 } 278 275 279 276 private function renderTable( ··· 478 475 ), 479 476 $table->getIssues()); 480 477 481 - $prop_box = id(new PHUIObjectBoxView()) 482 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 483 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 484 - ->addPropertyList($properties); 485 - 486 - $table_box = id(new PHUIObjectBoxView()) 487 - ->setHeaderText(pht('Database')) 488 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 489 - ->setTable($table_view); 490 - 491 - $key_box = id(new PHUIObjectBoxView()) 492 - ->setHeaderText(pht('Keys')) 493 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 494 - ->setTable($keys_view); 495 - 496 - return $this->buildResponse($title, array($prop_box, $table_box, $key_box)); 478 + return $this->buildResponse( 479 + $title, array($properties, $table_view, $keys_view)); 497 480 } 498 481 499 482 private function renderColumn( ··· 625 608 ), 626 609 $column->getIssues()); 627 610 628 - $box = id(new PHUIObjectBoxView()) 629 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 630 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 631 - ->addPropertyList($properties); 632 - 633 - return $this->buildResponse($title, $box); 611 + return $this->buildResponse($title, $properties); 634 612 } 635 613 636 614 private function renderKey( ··· 719 697 ), 720 698 $key->getIssues()); 721 699 722 - $box = id(new PHUIObjectBoxView()) 723 - ->setHeader($this->buildHeaderWithDocumentationLink($title)) 724 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 725 - ->addPropertyList($properties); 726 - 727 - return $this->buildResponse($title, $box); 700 + return $this->buildResponse($title, $properties); 728 701 } 729 702 730 703 private function buildProperties(array $properties, array $issues) { ··· 769 742 } 770 743 $view->addProperty(pht('Schema Status'), $status_view); 771 744 772 - return $view; 745 + return phutil_tag_div('config-page-property', $view); 773 746 } 774 747 775 748 }
+20 -13
src/applications/config/controller/PhabricatorConfigGroupController.php
··· 13 13 return new Aphront404Response(); 14 14 } 15 15 16 + $group_uri = PhabricatorConfigGroupConstants::getGroupURI( 17 + $options->getGroup()); 18 + $group_name = PhabricatorConfigGroupConstants::getGroupShortName( 19 + $options->getGroup()); 20 + 21 + $nav = $this->buildSideNavView(); 22 + $nav->selectFilter($group_uri); 23 + 16 24 $title = pht('%s Configuration', $options->getName()); 17 25 $list = $this->buildOptionList($options->getOptions()); 18 26 19 - $box = id(new PHUIObjectBoxView()) 20 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 21 - ->setObjectList($list); 22 - 23 27 $crumbs = $this 24 28 ->buildApplicationCrumbs() 25 - ->addTextCrumb(pht('Config'), $this->getApplicationURI()) 26 - ->addTextCrumb($options->getName(), $this->getApplicationURI()) 29 + ->addTextCrumb($group_name, $this->getApplicationURI($group_uri)) 30 + ->addTextCrumb($options->getName()) 27 31 ->setBorder(true); 28 32 29 33 $header = id(new PHUIHeaderView()) 30 34 ->setHeader($title) 31 - ->setHeaderIcon('fa-sliders'); 35 + ->setProfileHeader(true); 32 36 33 - $view = id(new PHUITwoColumnView()) 37 + $content = id(new PhabricatorConfigPageView()) 34 38 ->setHeader($header) 35 - ->setFooter($box); 39 + ->setContent($list); 36 40 37 41 return $this->newPage() 38 42 ->setTitle($title) 39 43 ->setCrumbs($crumbs) 40 - ->appendChild($view); 44 + ->setNavigation($nav) 45 + ->appendChild($content) 46 + ->addClass('white-background'); 41 47 } 42 48 43 49 private function buildOptionList(array $options) { ··· 62 68 $engine->process(); 63 69 64 70 $list = new PHUIObjectItemListView(); 71 + $list->setBig(true); 65 72 foreach ($options as $option) { 66 73 $summary = $engine->getOutput($option, 'summary'); 67 74 ··· 89 96 90 97 $db_value = idx($db_values, $option->getKey()); 91 98 if ($db_value && !$db_value->getIsDeleted()) { 92 - $item->addIcon('edit', pht('Customized')); 99 + $item->addIcon('fa-edit', pht('Customized')); 93 100 } 94 101 95 102 if ($option->getHidden()) { 96 - $item->addIcon('unpublish', pht('Hidden')); 103 + $item->addIcon('fa-eye-slash', pht('Hidden')); 97 104 } else if ($option->getLocked()) { 98 - $item->addIcon('lock', pht('Locked')); 105 + $item->addIcon('fa-lock', pht('Locked')); 99 106 } 100 107 101 108 $list->addItem($item);
+12 -8
src/applications/config/controller/PhabricatorConfigHistoryController.php
··· 31 31 $title = pht('Settings History'); 32 32 33 33 $crumbs = $this->buildApplicationCrumbs(); 34 - $crumbs->addTextCrumb('Configuration', $this->getApplicationURI()); 35 - $crumbs->addTextCrumb($title, '/config/history/'); 34 + $crumbs->addTextCrumb($title); 35 + $crumbs->setBorder(true); 36 36 37 37 $nav = $this->buildSideNavView(); 38 38 $nav->selectFilter('history/'); 39 39 40 - $view = id(new PHUITwoColumnView()) 41 - ->setNavigation($nav) 42 - ->setMainColumn(array( 43 - $timeline, 44 - )); 40 + $header = id(new PHUIHeaderView()) 41 + ->setHeader($title) 42 + ->setProfileHeader(true); 43 + 44 + $content = id(new PhabricatorConfigPageView()) 45 + ->setHeader($header) 46 + ->setContent($timeline); 45 47 46 48 return $this->newPage() 47 49 ->setTitle($title) 48 50 ->setCrumbs($crumbs) 49 - ->appendChild($view); 51 + ->setNavigation($nav) 52 + ->appendChild($content) 53 + ->addClass('white-background'); 50 54 } 51 55 52 56 }
+45 -46
src/applications/config/controller/PhabricatorConfigIssueListController.php
··· 15 15 $update_database = true); 16 16 17 17 $important = $this->buildIssueList( 18 - $issues, PhabricatorSetupCheck::GROUP_IMPORTANT); 18 + $issues, 19 + PhabricatorSetupCheck::GROUP_IMPORTANT, 20 + 'fa-warning'); 19 21 $php = $this->buildIssueList( 20 - $issues, PhabricatorSetupCheck::GROUP_PHP); 22 + $issues, 23 + PhabricatorSetupCheck::GROUP_PHP, 24 + 'fa-code'); 21 25 $mysql = $this->buildIssueList( 22 - $issues, PhabricatorSetupCheck::GROUP_MYSQL); 26 + $issues, 27 + PhabricatorSetupCheck::GROUP_MYSQL, 28 + 'fa-database'); 23 29 $other = $this->buildIssueList( 24 - $issues, PhabricatorSetupCheck::GROUP_OTHER); 25 - 26 - $setup_issues = array(); 27 - if ($important) { 28 - $setup_issues[] = id(new PHUIObjectBoxView()) 29 - ->setHeaderText(pht('Important Setup Issues')) 30 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 31 - ->setObjectList($important); 32 - } 33 - 34 - if ($php) { 35 - $setup_issues[] = id(new PHUIObjectBoxView()) 36 - ->setHeaderText(pht('PHP Setup Issues')) 37 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 38 - ->setObjectList($php); 39 - } 30 + $issues, 31 + PhabricatorSetupCheck::GROUP_OTHER, 32 + 'fa-question-circle'); 40 33 41 - if ($mysql) { 42 - $setup_issues[] = id(new PHUIObjectBoxView()) 43 - ->setHeaderText(pht('MySQL Setup Issues')) 44 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 45 - ->setObjectList($mysql); 46 - } 47 - 48 - if ($other) { 49 - $setup_issues[] = id(new PHUIObjectBoxView()) 50 - ->setHeaderText(pht('Other Setup Issues')) 51 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 52 - ->setObjectList($other); 53 - } 54 - 55 - if (empty($setup_issues)) { 56 - $setup_issues[] = id(new PHUIInfoView()) 34 + $no_issues = null; 35 + if (empty($issues)) { 36 + $no_issues = id(new PHUIInfoView()) 57 37 ->setTitle(pht('No Issues')) 58 38 ->appendChild( 59 39 pht('Your install has no current setup issues to resolve.')) ··· 62 42 63 43 $title = pht('Setup Issues'); 64 44 45 + $header = id(new PHUIHeaderView()) 46 + ->setHeader($title) 47 + ->setProfileHeader(true); 48 + 65 49 $crumbs = $this 66 50 ->buildApplicationCrumbs($nav) 67 - ->addTextCrumb(pht('Setup'), $this->getApplicationURI('issue/')); 51 + ->addTextCrumb(pht('Setup Issues')) 52 + ->setBorder(true); 53 + 54 + $page = array( 55 + $no_issues, 56 + $important, 57 + $php, 58 + $mysql, 59 + $other, 60 + ); 68 61 69 - $view = id(new PHUITwoColumnView()) 70 - ->setNavigation($nav) 71 - ->setMainColumn(array( 72 - $setup_issues, 73 - )); 62 + $content = id(new PhabricatorConfigPageView()) 63 + ->setHeader($header) 64 + ->setContent($page); 74 65 75 66 return $this->newPage() 76 67 ->setTitle($title) 77 68 ->setCrumbs($crumbs) 78 - ->appendChild($view); 69 + ->setNavigation($nav) 70 + ->appendChild($content) 71 + ->addClass('white-background'); 79 72 } 80 73 81 - private function buildIssueList(array $issues, $group) { 74 + private function buildIssueList(array $issues, $group, $fonticon) { 82 75 assert_instances_of($issues, 'PhabricatorSetupIssue'); 83 76 $list = new PHUIObjectItemListView(); 77 + $list->setBig(true); 84 78 $ignored_items = array(); 85 79 $items = 0; 86 80 ··· 93 87 ->setHref($href) 94 88 ->addAttribute($issue->getSummary()); 95 89 if (!$issue->getIsIgnored()) { 96 - $item->setStatusIcon('fa-warning yellow'); 90 + $icon = id(new PHUIIconView()) 91 + ->setIcon($fonticon) 92 + ->setBackground('bg-sky'); 93 + $item->setImageIcon($icon); 97 94 $list->addItem($item); 98 95 } else { 99 - $item->addIcon('fa-eye-slash', pht('Ignored')); 96 + $icon = id(new PHUIIconView()) 97 + ->setIcon('fa-eye-slash') 98 + ->setBackground('bg-grey'); 100 99 $item->setDisabled(true); 101 - $item->setStatusIcon('fa-warning grey'); 100 + $item->setImageIcon($icon); 102 101 $ignored_items[] = $item; 103 102 } 104 103 }
+8 -2
src/applications/config/controller/PhabricatorConfigIssueViewController.php
··· 12 12 PhabricatorSetupCheck::getUnignoredIssueKeys($issues), 13 13 $update_database = true); 14 14 15 + $nav = $this->buildSideNavView(); 16 + $nav->selectFilter('issue/'); 17 + 15 18 if (empty($issues[$issue_key])) { 16 19 $content = id(new PHUIInfoView()) 17 20 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) ··· 35 38 ->buildApplicationCrumbs() 36 39 ->setBorder(true) 37 40 ->addTextCrumb(pht('Setup Issues'), $this->getApplicationURI('issue/')) 38 - ->addTextCrumb($title, $request->getRequestURI()); 41 + ->addTextCrumb($title, $request->getRequestURI()) 42 + ->setBorder(true); 39 43 40 44 return $this->newPage() 41 45 ->setTitle($title) 42 46 ->setCrumbs($crumbs) 43 - ->appendChild($content); 47 + ->setNavigation($nav) 48 + ->appendChild($content) 49 + ->addClass('white-background'); 44 50 } 45 51 46 52 private function renderIssue(PhabricatorSetupIssue $issue) {
+17 -14
src/applications/config/controller/PhabricatorConfigListController.php
··· 12 12 $groups = PhabricatorApplicationConfigOptions::loadAll(); 13 13 $core_list = $this->buildConfigOptionsList($groups, 'core'); 14 14 15 - $title = pht('Core Configuration'); 15 + $title = pht('Core Settings'); 16 16 17 - $core = id(new PHUIObjectBoxView()) 18 - ->setHeaderText($title) 19 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 20 - ->setObjectList($core_list); 17 + $header = id(new PHUIHeaderView()) 18 + ->setHeader($title) 19 + ->setProfileHeader(true); 21 20 22 21 $crumbs = $this 23 22 ->buildApplicationCrumbs() 24 - ->addTextCrumb(pht('Configuration'), $this->getApplicationURI()) 25 - ->addTextCrumb($title); 23 + ->addTextCrumb(pht('Core')) 24 + ->setBorder(true); 26 25 27 - $view = id(new PHUITwoColumnView()) 28 - ->setNavigation($nav) 29 - ->setMainColumn(array( 30 - $core, 31 - )); 26 + $content = id(new PhabricatorConfigPageView()) 27 + ->setHeader($header) 28 + ->setContent($core_list); 32 29 33 30 return $this->newPage() 34 31 ->setTitle($title) 35 32 ->setCrumbs($crumbs) 36 - ->appendChild($view); 33 + ->setNavigation($nav) 34 + ->appendChild($content) 35 + ->addClass('white-background'); 37 36 } 38 37 39 38 private function buildConfigOptionsList(array $groups, $type) { 40 39 assert_instances_of($groups, 'PhabricatorApplicationConfigOptions'); 41 40 42 41 $list = new PHUIObjectItemListView(); 42 + $list->setBig(true); 43 43 $groups = msort($groups, 'getName'); 44 44 foreach ($groups as $group) { 45 45 if ($group->getGroup() == $type) { 46 + $icon = id(new PHUIIconView()) 47 + ->setIcon($group->getIcon()) 48 + ->setBackground('bg-blue'); 46 49 $item = id(new PHUIObjectItemView()) 47 50 ->setHeader($group->getName()) 48 51 ->setHref('/config/group/'.$group->getKey().'/') 49 52 ->addAttribute($group->getDescription()) 50 - ->setImageIcon($group->getIcon()); 53 + ->setImageIcon($icon); 51 54 $list->addItem($item); 52 55 } 53 56 }
+11 -6
src/applications/config/controller/PhabricatorConfigModuleController.php
··· 18 18 19 19 $crumbs = $this->buildApplicationCrumbs(); 20 20 $crumbs->addTextCrumb($title); 21 + $crumbs->setBorder(true); 21 22 22 23 $nav = $this->buildSideNavView(); 23 24 $nav->selectFilter('module/'.$key.'/'); 24 25 25 - $view = id(new PHUITwoColumnView()) 26 - ->setNavigation($nav) 27 - ->setMainColumn(array( 28 - $content, 29 - )); 26 + $header = id(new PHUIHeaderView()) 27 + ->setHeader($title) 28 + ->setProfileHeader(true); 29 + 30 + $content = id(new PhabricatorConfigPageView()) 31 + ->setHeader($header) 32 + ->setContent($content); 30 33 31 34 return $this->newPage() 32 35 ->setTitle($title) 33 36 ->setCrumbs($crumbs) 34 - ->appendChild($view); 37 + ->setNavigation($nav) 38 + ->appendChild($content) 39 + ->addClass('white-background'); 35 40 } 36 41 37 42 }
+13 -14
src/applications/config/controller/PhabricatorConfigVersionController.php
··· 10 10 11 11 $crumbs = $this 12 12 ->buildApplicationCrumbs() 13 - ->addTextCrumb(pht('Configuration'), $this->getApplicationURI()) 14 - ->addTextCrumb($title); 13 + ->addTextCrumb($title) 14 + ->setBorder(true); 15 15 16 16 $versions = $this->renderModuleStatus($viewer); 17 17 18 18 $nav = $this->buildSideNavView(); 19 19 $nav->selectFilter('version/'); 20 20 21 - $view = id(new PHUITwoColumnView()) 22 - ->setNavigation($nav) 23 - ->setMainColumn(array( 24 - $versions, 25 - )); 21 + $header = id(new PHUIHeaderView()) 22 + ->setHeader($title) 23 + ->setProfileHeader(true); 24 + 25 + $content = id(new PhabricatorConfigPageView()) 26 + ->setHeader($header) 27 + ->setContent($versions); 26 28 27 29 return $this->newPage() 28 30 ->setTitle($title) 29 31 ->setCrumbs($crumbs) 30 - ->appendChild($view); 32 + ->setNavigation($nav) 33 + ->appendChild($content) 34 + ->addClass('white-background'); 31 35 32 36 } 33 37 ··· 39 43 $version_property_list->addProperty($name, $version); 40 44 } 41 45 42 - $object_box = id(new PHUIObjectBoxView()) 43 - ->setHeaderText(pht('Version Information')) 44 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 45 - ->addPropertyList($version_property_list); 46 - 47 46 $phabricator_root = dirname(phutil_get_library_root('phabricator')); 48 47 $version_path = $phabricator_root.'/conf/local/VERSION'; 49 48 if (Filesystem::pathExists($version_path)) { ··· 53 52 $version_from_file); 54 53 } 55 54 56 - return $object_box; 55 + return $version_property_list; 57 56 } 58 57 59 58 private function loadVersions(PhabricatorUser $viewer) {
+13 -14
src/applications/config/controller/PhabricatorConfigWelcomeController.php
··· 11 11 12 12 $title = pht('Installation Guide'); 13 13 14 + $header = id(new PHUIHeaderView()) 15 + ->setHeader($title) 16 + ->setProfileHeader(true); 17 + 14 18 $crumbs = $this 15 19 ->buildApplicationCrumbs() 16 - ->addTextCrumb($title); 20 + ->addTextCrumb($title) 21 + ->setBorder(true); 17 22 18 - $view = id(new PHUITwoColumnView()) 19 - ->setNavigation($nav) 20 - ->setMainColumn(array( 21 - $this->buildWelcomeScreen($request), 22 - )); 23 + $content = id(new PhabricatorConfigPageView()) 24 + ->setHeader($header) 25 + ->setContent($this->buildWelcomeScreen($request)); 23 26 24 27 return $this->newPage() 25 28 ->setTitle($title) 26 29 ->setCrumbs($crumbs) 27 - ->appendChild($view); 30 + ->setNavigation($nav) 31 + ->appendChild($content) 32 + ->addClass('white-background'); 28 33 } 29 34 30 35 public function buildWelcomeScreen(AphrontRequest $request) { ··· 346 351 $diffusion_user_guide, 347 352 $diffusion_setup_guide)); 348 353 349 - $header = id(new PHUIHeaderView()) 350 - ->setHeader(pht('Welcome to Phabricator')); 351 - 352 354 $setup_header = new PHUIRemarkupView( 353 355 $viewer, pht('=Setup and Configuration')); 354 356 ··· 359 361 $viewer, pht('=Quick Start Guide')); 360 362 361 363 $document = id(new PHUIDocumentViewPro()) 362 - ->setHeader($header) 363 364 ->setFluid(true) 364 365 ->appendChild($setup_header) 365 366 ->appendChild($setup) ··· 369 370 ->appendChild($quick); 370 371 371 372 return id(new PHUIBoxView()) 372 - ->setBorder(true) 373 - ->appendChild($document) 374 - ->addClass('mlb'); 373 + ->appendChild($document); 375 374 } 376 375 377 376 private function newItem(AphrontRequest $request, $icon, $content) {
+9 -12
src/applications/config/module/PhabricatorConfigCollectorsModule.php
··· 48 48 ); 49 49 } 50 50 51 + $info = id(new PHUIInfoView()) 52 + ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) 53 + ->appendChild(pht( 54 + 'Collectors with custom policies are highlighted. Use '. 55 + '%s to change retention policies.', 56 + phutil_tag('tt', array(), 'bin/garbage set-policy'))); 57 + 51 58 $table = id(new AphrontTableView($rows)) 59 + ->setNotice($info) 52 60 ->setRowClasses($rowc) 53 61 ->setHeaders( 54 62 array( ··· 63 71 null, 64 72 )); 65 73 66 - $header = id(new PHUIHeaderView()) 67 - ->setHeader(pht('Garbage Collectors')) 68 - ->setSubheader( 69 - pht( 70 - 'Collectors with custom policies are highlighted. Use '. 71 - '%s to change retention policies.', 72 - phutil_tag('tt', array(), 'bin/garbage set-policy'))); 73 - 74 - return id(new PHUIObjectBoxView()) 75 - ->setHeader($header) 76 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 77 - ->setTable($table); 74 + return $table; 78 75 } 79 76 80 77 }
+1 -6
src/applications/config/module/PhabricatorConfigEdgeModule.php
··· 25 25 ); 26 26 } 27 27 28 - $table = id(new AphrontTableView($rows)) 28 + return id(new AphrontTableView($rows)) 29 29 ->setHeaders( 30 30 array( 31 31 pht('Constant'), ··· 38 38 null, 39 39 'pri wide', 40 40 )); 41 - 42 - return id(new PHUIObjectBoxView()) 43 - ->setHeaderText(pht('Edge Types')) 44 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 45 - ->setTable($table); 46 41 } 47 42 48 43 }
+1 -6
src/applications/config/module/PhabricatorConfigHTTPParameterTypesModule.php
··· 16 16 17 17 $types = AphrontHTTPParameterType::getAllTypes(); 18 18 19 - $table = id(new PhabricatorHTTPParameterTypeTableView()) 19 + return id(new PhabricatorHTTPParameterTypeTableView()) 20 20 ->setHTTPParameterTypes($types); 21 - 22 - return id(new PHUIObjectBoxView()) 23 - ->setHeaderText(pht('HTTP Parameter Types')) 24 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 25 - ->setTable($table); 26 21 } 27 22 28 23 }
+1 -6
src/applications/config/module/PhabricatorConfigPHIDModule.php
··· 51 51 ); 52 52 } 53 53 54 - $table = id(new AphrontTableView($rows)) 54 + return id(new AphrontTableView($rows)) 55 55 ->setHeaders( 56 56 array( 57 57 pht('Constant'), ··· 70 70 'icon', 71 71 'wide', 72 72 )); 73 - 74 - return id(new PHUIObjectBoxView()) 75 - ->setHeaderText(pht('PHID Types')) 76 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 77 - ->setTable($table); 78 73 } 79 74 80 75 }
+1 -6
src/applications/config/module/PhabricatorConfigRequestExceptionHandlerModule.php
··· 25 25 ); 26 26 } 27 27 28 - $table = id(new AphrontTableView($rows)) 28 + return id(new AphrontTableView($rows)) 29 29 ->setHeaders( 30 30 array( 31 31 pht('Priority'), ··· 38 38 'pri', 39 39 'wide', 40 40 )); 41 - 42 - return id(new PHUIObjectBoxView()) 43 - ->setHeaderText(pht('Exception Handlers')) 44 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 45 - ->setTable($table); 46 41 } 47 42 48 43 }
+1 -6
src/applications/config/module/PhabricatorConfigSiteModule.php
··· 24 24 ); 25 25 } 26 26 27 - $table = id(new AphrontTableView($rows)) 27 + return id(new AphrontTableView($rows)) 28 28 ->setHeaders( 29 29 array( 30 30 pht('Priority'), ··· 37 37 'pri', 38 38 'wide', 39 39 )); 40 - 41 - return id(new PHUIObjectBoxView()) 42 - ->setHeaderText(pht('Sites')) 43 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 44 - ->setTable($table); 45 40 } 46 41 47 42 }
+60
src/applications/config/view/PhabricatorConfigPageView.php
··· 1 + <?php 2 + 3 + final class PhabricatorConfigPageView extends AphrontTagView { 4 + 5 + private $header; 6 + private $content; 7 + private $footer; 8 + 9 + public function setHeader(PHUIHeaderView $header) { 10 + $this->header = $header; 11 + return $this; 12 + } 13 + 14 + public function setContent($content) { 15 + $this->content = $content; 16 + return $this; 17 + } 18 + 19 + public function setFooter($footer) { 20 + $this->footer = $footer; 21 + return $this; 22 + } 23 + 24 + protected function getTagName() { 25 + return 'div'; 26 + } 27 + 28 + protected function getTagAttributes() { 29 + require_celerity_resource('config-page-css'); 30 + 31 + $classes = array(); 32 + $classes[] = 'config-page'; 33 + 34 + return array( 35 + 'class' => implode(' ', $classes), 36 + ); 37 + } 38 + 39 + protected function getTagContent() { 40 + 41 + $header = null; 42 + if ($this->header) { 43 + $header = phutil_tag_div('config-page-header', $this->header); 44 + } 45 + 46 + $content = null; 47 + if ($this->content) { 48 + $content = phutil_tag_div('config-page-content', $this->content); 49 + } 50 + 51 + $footer = null; 52 + if ($this->footer) { 53 + $footer = phutil_tag_div('config-page-footer', $this->footer); 54 + } 55 + 56 + return array($header, $content, $footer); 57 + 58 + } 59 + 60 + }
-26
src/applications/harbormaster/config/PhabricatorHarbormasterConfigOptions.php
··· 1 - <?php 2 - 3 - final class PhabricatorHarbormasterConfigOptions 4 - extends PhabricatorApplicationConfigOptions { 5 - 6 - public function getName() { 7 - return pht('Harbormaster'); 8 - } 9 - 10 - public function getDescription() { 11 - return pht('Configure Harbormaster build engine.'); 12 - } 13 - 14 - public function getIcon() { 15 - return 'fa-ship'; 16 - } 17 - 18 - public function getGroup() { 19 - return 'apps'; 20 - } 21 - 22 - public function getOptions() { 23 - return array(); 24 - } 25 - 26 - }
-26
src/applications/phrequent/config/PhabricatorPhrequentConfigOptions.php
··· 1 - <?php 2 - 3 - final class PhabricatorPhrequentConfigOptions 4 - extends PhabricatorApplicationConfigOptions { 5 - 6 - public function getName() { 7 - return pht('Phrequent'); 8 - } 9 - 10 - public function getDescription() { 11 - return pht('Configure Phrequent.'); 12 - } 13 - 14 - public function getIcon() { 15 - return 'fa-clock-o'; 16 - } 17 - 18 - public function getGroup() { 19 - return 'apps'; 20 - } 21 - 22 - public function getOptions() { 23 - return array(); 24 - } 25 - 26 - }
+1 -6
src/applications/search/engineextension/PhabricatorHovercardEngineExtensionModule.php
··· 29 29 ); 30 30 } 31 31 32 - $table = id(new AphrontTableView($rows)) 32 + return id(new AphrontTableView($rows)) 33 33 ->setHeaders( 34 34 array( 35 35 pht('Order'), ··· 46 46 'wide pri', 47 47 null, 48 48 )); 49 - 50 - return id(new PHUIObjectBoxView()) 51 - ->setHeaderText(pht('HovercardEngine Extensions')) 52 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 53 - ->setTable($table); 54 49 } 55 50 56 51 }
+1 -6
src/applications/search/engineextension/PhabricatorSearchEngineExtensionModule.php
··· 29 29 ); 30 30 } 31 31 32 - $table = id(new AphrontTableView($rows)) 32 + return id(new AphrontTableView($rows)) 33 33 ->setHeaders( 34 34 array( 35 35 pht('Order'), ··· 46 46 'wide pri', 47 47 null, 48 48 )); 49 - 50 - return id(new PHUIObjectBoxView()) 51 - ->setHeaderText(pht('SearchEngine Extensions')) 52 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 53 - ->setTable($table); 54 49 } 55 50 56 51 }
+1 -5
src/applications/search/index/PhabricatorFulltextEngineExtensionModule.php
··· 24 24 ); 25 25 } 26 26 27 - $table = id(new AphrontTableView($rows)) 27 + return id(new AphrontTableView($rows)) 28 28 ->setHeaders( 29 29 array( 30 30 pht('Class'), ··· 36 36 'wide pri', 37 37 )); 38 38 39 - return id(new PHUIObjectBoxView()) 40 - ->setHeaderText(pht('FulltextEngine Extensions')) 41 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 42 - ->setTable($table); 43 39 } 44 40 45 41 }
+1 -5
src/applications/search/index/PhabricatorIndexEngineExtensionModule.php
··· 24 24 ); 25 25 } 26 26 27 - $table = id(new AphrontTableView($rows)) 27 + return id(new AphrontTableView($rows)) 28 28 ->setHeaders( 29 29 array( 30 30 pht('Class'), ··· 36 36 'wide pri', 37 37 )); 38 38 39 - return id(new PHUIObjectBoxView()) 40 - ->setHeaderText(pht('IndexEngine Extensions')) 41 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 42 - ->setTable($table); 43 39 } 44 40 45 41 }
+1 -5
src/applications/system/engine/PhabricatorDestructionEngineExtensionModule.php
··· 24 24 ); 25 25 } 26 26 27 - $table = id(new AphrontTableView($rows)) 27 + return id(new AphrontTableView($rows)) 28 28 ->setHeaders( 29 29 array( 30 30 pht('Class'), ··· 36 36 'wide pri', 37 37 )); 38 38 39 - return id(new PHUIObjectBoxView()) 40 - ->setHeaderText(pht('DestructionEngine Extensions')) 41 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 42 - ->setTable($table); 43 39 } 44 40 45 41 }
+1 -5
src/applications/transactions/engineextension/PhabricatorEditEngineExtensionModule.php
··· 28 28 ); 29 29 } 30 30 31 - $table = id(new AphrontTableView($rows)) 31 + return id(new AphrontTableView($rows)) 32 32 ->setHeaders( 33 33 array( 34 34 pht('Priority'), ··· 44 44 null, 45 45 )); 46 46 47 - return id(new PHUIObjectBoxView()) 48 - ->setHeaderText(pht('EditEngine Extensions')) 49 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 50 - ->setTable($table); 51 47 } 52 48 53 49 }
+1 -5
src/infrastructure/contentsource/PhabricatorContentSourceModule.php
··· 27 27 ); 28 28 } 29 29 30 - $table = id(new AphrontTableView($rows)) 30 + return id(new AphrontTableView($rows)) 31 31 ->setHeaders( 32 32 array( 33 33 pht('Key'), ··· 43 43 'wide', 44 44 )); 45 45 46 - return id(new PHUIObjectBoxView()) 47 - ->setHeaderText(pht('Content Sources')) 48 - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 49 - ->setTable($table); 50 46 } 51 47 52 48 }
+4
webroot/rsrc/css/application/base/standard-page-view.css
··· 17 17 clear: both; 18 18 } 19 19 20 + body.white-background { 21 + background: #fff; 22 + } 23 + 20 24 .phabricator-standard-page-footer { 21 25 text-align: right; 22 26 margin: 44px 16px 16px;
+59
webroot/rsrc/css/application/config/config-page.css
··· 1 + /** 2 + * @provides config-page-css 3 + */ 4 + 5 + .config-page-header { 6 + margin: 28px 24px 0; 7 + padding-bottom: 28px; 8 + border-bottom: 1px solid {$thinblueborder}; 9 + } 10 + 11 + .config-page-header .phui-profile-header { 12 + padding: 0; 13 + } 14 + 15 + .config-page-header .phui-profile-header.phui-header-shell .phui-header-header { 16 + font-size: 20px; 17 + } 18 + 19 + 20 + .config-page-content { 21 + margin: 0 24px; 22 + } 23 + 24 + .device-desktop .config-page-content .phui-object-item-list-view { 25 + padding-left: 0; 26 + padding-right: 0; 27 + } 28 + 29 + .device-desktop .config-page-content .phui-document-fluid .phui-document-view { 30 + padding: 16px 0; 31 + margin: 0; 32 + } 33 + 34 + .config-page-content .aphront-table-view { 35 + border: none; 36 + } 37 + 38 + .config-page-property { 39 + padding-top: 4px; 40 + border-bottom: 1px solid {$thinblueborder}; 41 + } 42 + 43 + .config-page-content .aphront-table-notice { 44 + padding: 0; 45 + } 46 + 47 + .config-page-content .aphront-table-notice .phui-info-view { 48 + margin-left: 0; 49 + margin-right: 0; 50 + } 51 + 52 + .config-page-content .aphront-table-wrap + .aphront-table-wrap { 53 + margin-top: 20px; 54 + border-top: 1px solid {$thinblueborder}; 55 + } 56 + 57 + .config-page-content .phui-box.phui-box-blue-property { 58 + margin-top: 16px; 59 + }
+3
webroot/rsrc/css/font/phui-font-icon-base.css
··· 159 159 .phui-icon-view.bg-bluegrey { 160 160 background-color: {$bluetext}; 161 161 } 162 + .phui-icon-view.bg-grey { 163 + background-color: {$lightgreytext}; 164 + } 162 165 .phui-icon-view.bg-red { 163 166 background-color: {$red}; 164 167 }
+8 -4
webroot/rsrc/css/phui/phui-object-item-list-view.css
··· 447 447 */ 448 448 449 449 450 - .phui-object-item-disabled .phui-object-item-link, 451 - .phui-object-item-disabled .phui-object-item-link a { 450 + .phui-object-item.phui-object-item-disabled .phui-object-item-link, 451 + .phui-object-item.phui-object-item-disabled .phui-object-item-link a { 452 452 color: {$lightgreytext}; 453 453 } 454 454 455 - .phui-object-item-disabled .phui-object-item-frame { 455 + .phui-object-item.phui-object-item-disabled .phui-object-item-frame { 456 456 border-color: #d7d7d7; 457 457 } 458 458 459 - .phui-object-item-disabled .phui-object-item-objname { 459 + .phui-object-item.phui-object-item-disabled .phui-object-item-objname { 460 460 color: {$greytext}; 461 461 text-decoration: line-through; 462 462 } ··· 771 771 .device-desktop .phui-object-list-big .phui-object-item { 772 772 margin-bottom: 8px; 773 773 } 774 + 775 + .device-desktop .phui-object-list-big .phui-object-item-frame:hover { 776 + 777 + }