Page MenuHomePhabricator

D16482.diff
No OneTemporary

D16482.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -42,7 +42,6 @@
'rsrc/css/application/config/config-options.css' => '0ede4c9b',
'rsrc/css/application/config/config-page.css' => '8798e14f',
'rsrc/css/application/config/config-template.css' => '8e6c6fcd',
- 'rsrc/css/application/config/config-welcome.css' => '035aa483',
'rsrc/css/application/config/setup-issue.css' => 'f794cfc3',
'rsrc/css/application/config/unhandled-exception.css' => '4c96257a',
'rsrc/css/application/conpherence/durable-column.css' => '86396117',
@@ -549,7 +548,6 @@
'conduit-api-css' => '7bc725c4',
'config-options-css' => '0ede4c9b',
'config-page-css' => '8798e14f',
- 'config-welcome-css' => '035aa483',
'conpherence-durable-column-view' => '86396117',
'conpherence-menu-css' => '90bdf85c',
'conpherence-message-pane-css' => '5c7b7b17',
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
@@ -2210,7 +2210,6 @@
'PhabricatorConfigTransactionQuery' => 'applications/config/query/PhabricatorConfigTransactionQuery.php',
'PhabricatorConfigValidationException' => 'applications/config/exception/PhabricatorConfigValidationException.php',
'PhabricatorConfigVersionController' => 'applications/config/controller/PhabricatorConfigVersionController.php',
- 'PhabricatorConfigWelcomeController' => 'applications/config/controller/PhabricatorConfigWelcomeController.php',
'PhabricatorConpherenceApplication' => 'applications/conpherence/application/PhabricatorConpherenceApplication.php',
'PhabricatorConpherenceColumnVisibleSetting' => 'applications/settings/setting/PhabricatorConpherenceColumnVisibleSetting.php',
'PhabricatorConpherenceNotificationsSetting' => 'applications/settings/setting/PhabricatorConpherenceNotificationsSetting.php',
@@ -2646,7 +2645,6 @@
'PhabricatorGuideModule' => 'applications/guides/module/PhabricatorGuideModule.php',
'PhabricatorGuideModuleController' => 'applications/guides/controller/PhabricatorGuideModuleController.php',
'PhabricatorGuideQuickStartModule' => 'applications/guides/module/PhabricatorGuideQuickStartModule.php',
- 'PhabricatorGuideWelcomeModule' => 'applications/guides/module/PhabricatorGuideWelcomeModule.php',
'PhabricatorHTTPParameterTypeTableView' => 'applications/config/view/PhabricatorHTTPParameterTypeTableView.php',
'PhabricatorHandleList' => 'applications/phid/handle/pool/PhabricatorHandleList.php',
'PhabricatorHandleObjectSelectorDataView' => 'applications/phid/handle/view/PhabricatorHandleObjectSelectorDataView.php',
@@ -6964,7 +6962,6 @@
'PhabricatorConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorConfigValidationException' => 'Exception',
'PhabricatorConfigVersionController' => 'PhabricatorConfigController',
- 'PhabricatorConfigWelcomeController' => 'PhabricatorConfigController',
'PhabricatorConpherenceApplication' => 'PhabricatorApplication',
'PhabricatorConpherenceColumnVisibleSetting' => 'PhabricatorInternalSetting',
'PhabricatorConpherenceNotificationsSetting' => 'PhabricatorSelectSetting',
@@ -7464,7 +7461,6 @@
'PhabricatorGuideModule' => 'Phobject',
'PhabricatorGuideModuleController' => 'PhabricatorGuideController',
'PhabricatorGuideQuickStartModule' => 'PhabricatorGuideModule',
- 'PhabricatorGuideWelcomeModule' => 'PhabricatorGuideModule',
'PhabricatorHTTPParameterTypeTableView' => 'AphrontView',
'PhabricatorHandleList' => array(
'Phobject',
diff --git a/src/applications/config/application/PhabricatorConfigApplication.php b/src/applications/config/application/PhabricatorConfigApplication.php
--- a/src/applications/config/application/PhabricatorConfigApplication.php
+++ b/src/applications/config/application/PhabricatorConfigApplication.php
@@ -44,7 +44,6 @@
'edit/(?P<key>[\w\.\-]+)/' => 'PhabricatorConfigEditController',
'group/(?P<key>[^/]+)/' => 'PhabricatorConfigGroupController',
'version/' => 'PhabricatorConfigVersionController',
- 'welcome/' => 'PhabricatorConfigWelcomeController',
'database/'.
'(?:(?P<database>[^/]+)/'.
'(?:(?P<table>[^/]+)/'.
diff --git a/src/applications/config/controller/PhabricatorConfigController.php b/src/applications/config/controller/PhabricatorConfigController.php
--- a/src/applications/config/controller/PhabricatorConfigController.php
+++ b/src/applications/config/controller/PhabricatorConfigController.php
@@ -7,33 +7,47 @@
}
public function buildSideNavView($filter = null, $for_app = false) {
- $user = $this->getRequest()->getUser();
+ $guide_href = new PhutilURI('/guides/');
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
$nav->addLabel(pht('Configuration'));
- $nav->addFilter('/', pht('Core Settings'));
- $nav->addFilter('application/', pht('Application Settings'));
- $nav->addFilter('history/', pht('Settings History'));
- $nav->addFilter('version/', pht('Version Information'));
- $nav->addFilter('all/', pht('All Settings'));
+ $nav->addFilter('/',
+ pht('Core Settings'), null, 'fa-gear');
+ $nav->addFilter('application/',
+ pht('Application Settings'), null, 'fa-globe');
+ $nav->addFilter('history/',
+ pht('Settings History'), null, 'fa-history');
+ $nav->addFilter('version/',
+ pht('Version Information'), null, 'fa-download');
+ $nav->addFilter('all/',
+ pht('All Settings'), null, 'fa-list-ul');
$nav->addLabel(pht('Setup'));
- $nav->addFilter('issue/', pht('Setup Issues'));
- $nav->addFilter('welcome/', pht('Installation Guide'));
+ $nav->addFilter('issue/',
+ pht('Setup Issues'), null, 'fa-warning');
+ $nav->addFilter(null,
+ pht('Installation Guide'), $guide_href, 'fa-book');
$nav->addLabel(pht('Database'));
- $nav->addFilter('database/', pht('Database Status'));
- $nav->addFilter('dbissue/', pht('Database Issues'));
+ $nav->addFilter('database/',
+ pht('Database Status'), null, 'fa-heartbeat');
+ $nav->addFilter('dbissue/',
+ pht('Database Issues'), null, 'fa-exclamation-circle');
$nav->addLabel(pht('Cache'));
- $nav->addFilter('cache/', pht('Cache Status'));
+ $nav->addFilter('cache/',
+ pht('Cache Status'), null, 'fa-home');
$nav->addLabel(pht('Cluster'));
- $nav->addFilter('cluster/databases/', pht('Database Servers'));
- $nav->addFilter('cluster/notifications/', pht('Notification Servers'));
- $nav->addFilter('cluster/repositories/', pht('Repository Servers'));
+ $nav->addFilter('cluster/databases/',
+ pht('Database Servers'), null, 'fa-database');
+ $nav->addFilter('cluster/notifications/',
+ pht('Notification Servers'), null, 'fa-bell-o');
+ $nav->addFilter('cluster/repositories/',
+ pht('Repository Servers'), null, 'fa-code');
$nav->addLabel(pht('Modules'));
$modules = PhabricatorConfigModule::getAllModules();
foreach ($modules as $key => $module) {
- $nav->addFilter('module/'.$key.'/', $module->getModuleName());
+ $nav->addFilter('module/'.$key.'/',
+ $module->getModuleName(), null, 'fa-puzzle-piece');
}
return $nav;
diff --git a/src/applications/config/controller/PhabricatorConfigWelcomeController.php b/src/applications/config/controller/PhabricatorConfigWelcomeController.php
deleted file mode 100644
--- a/src/applications/config/controller/PhabricatorConfigWelcomeController.php
+++ /dev/null
@@ -1,411 +0,0 @@
-<?php
-
-final class PhabricatorConfigWelcomeController
- extends PhabricatorConfigController {
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter('welcome/');
-
- $title = pht('Installation Guide');
-
- $header = id(new PHUIHeaderView())
- ->setHeader($title)
- ->setProfileHeader(true);
-
- $crumbs = $this
- ->buildApplicationCrumbs()
- ->addTextCrumb($title)
- ->setBorder(true);
-
- $content = id(new PhabricatorConfigPageView())
- ->setHeader($header)
- ->setContent($this->buildWelcomeScreen($request));
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content)
- ->addClass('white-background');
- }
-
- public function buildWelcomeScreen(AphrontRequest $request) {
- $viewer = $request->getUser();
- $this->requireResource('config-welcome-css');
-
- $content = pht(
- "=== Install Phabricator ===\n\n".
- "You have successfully installed Phabricator. This screen will guide ".
- "you through configuration and orientation. ".
- "These steps are optional, and you can go through them in any order. ".
- "If you want to get back to this screen later on, you can find it in ".
- "the **Config** application under **Welcome Screen**.");
-
- $setup = array();
-
- $setup[] = $this->newItem(
- $request,
- 'fa-check-square-o green',
- $content);
-
- $issues_resolved = !PhabricatorSetupCheck::getOpenSetupIssueKeys();
-
- $setup_href = PhabricatorEnv::getURI('/config/issue/');
- if ($issues_resolved) {
- $content = pht(
- "=== Resolve Setup Issues ===\n\n".
- "You've resolved (or ignored) all outstanding setup issues. ".
- "You can review issues in the **Config** application, under ".
- "**[[ %s | Setup Issues ]]**.",
- $setup_href);
- $icon = 'fa-check-square-o green';
- } else {
- $content = pht(
- "=== Resolve Setup Issues ===\n\n".
- "You have some unresolved setup issues to take care of. Click ".
- "the link in the yellow banner at the top of the screen to see ".
- "them, or find them in the **Config** application under ".
- "**[[ %s | Setup Issues ]]**. ".
- "Although most setup issues should be resolved, sometimes an issue ".
- "is not applicable to an install. ".
- "If you don't intend to fix a setup issue (or don't want to fix ".
- "it for now), you can use the \"Ignore\" action to mark it as ".
- "something you don't plan to deal with.",
- $setup_href);
- $icon = 'fa-warning red';
- }
-
- $setup[] = $this->newItem(
- $request,
- $icon,
- $content);
-
- $configs = id(new PhabricatorAuthProviderConfigQuery())
- ->setViewer(PhabricatorUser::getOmnipotentUser())
- ->execute();
-
- $auth_href = PhabricatorEnv::getURI('/auth/');
- $have_auth = (bool)$configs;
- if ($have_auth) {
- $content = pht(
- "=== Login and Registration ===\n\n".
- "You've configured at least one authentication provider, so users ".
- "can register or log in. ".
- "To configure more providers or adjust settings, use the ".
- "**[[ %s | Auth Application ]]**.",
- $auth_href);
- $icon = 'fa-check-square-o green';
- } else {
- $content = pht(
- "=== Login and Registration ===\n\n".
- "You haven't configured any authentication providers yet. ".
- "Authentication providers allow users to register accounts and ".
- "log in to Phabricator. You can configure Phabricator to accept ".
- "credentials like username and password, LDAP, or Google OAuth. ".
- "You can configure authentication using the ".
- "**[[ %s | Auth Application ]]**.",
- $auth_href);
- $icon = 'fa-warning red';
- }
-
- $setup[] = $this->newItem(
- $request,
- $icon,
- $content);
-
- $config_href = PhabricatorEnv::getURI('/config/');
-
- // Just load any config value at all; if one exists the install has figured
- // out how to configure things.
- $have_config = (bool)id(new PhabricatorConfigEntry())->loadAllWhere(
- '1 = 1 LIMIT 1');
-
- if ($have_config) {
- $content = pht(
- "=== Configure Phabricator Settings ===\n\n".
- "You've configured at least one setting from the web interface. ".
- "To configure more settings later, use the ".
- "**[[ %s | Config Application ]]**.",
- $config_href);
- $icon = 'fa-check-square-o green';
- } else {
- $content = pht(
- "=== Configure Phabricator Settings ===\n\n".
- 'Many aspects of Phabricator are configurable. To explore and '.
- 'adjust settings, use the **[[ %s | Config Application ]]**.',
- $config_href);
- $icon = 'fa-info-circle';
- }
-
- $setup[] = $this->newItem(
- $request,
- $icon,
- $content);
-
- $settings_href = PhabricatorEnv::getURI('/settings/');
-
- $preferences = id(new PhabricatorUserPreferencesQuery())
- ->setViewer($viewer)
- ->withUsers(array($viewer))
- ->executeOne();
-
- $have_settings = ($preferences && $preferences->getPreferences());
-
- if ($have_settings) {
- $content = pht(
- "=== Adjust Account Settings ===\n\n".
- "You've adjusted at least one setting on your account. ".
- "To make more adjustments, visit the ".
- "**[[ %s | Settings Application ]]**.",
- $settings_href);
- $icon = 'fa-check-square-o green';
- } else {
- $content = pht(
- "=== Adjust Account Settings ===\n\n".
- 'You can configure settings for your account by clicking the '.
- 'wrench icon in the main menu bar, or visiting the '.
- '**[[ %s | Settings Application ]]** directly.',
- $settings_href);
- $icon = 'fa-info-circle';
- }
-
- $setup[] = $this->newItem(
- $request,
- $icon,
- $content);
-
- $dashboard_href = PhabricatorEnv::getURI('/dashboard/');
- $have_dashboard = (bool)PhabricatorDashboardInstall::getDashboard(
- $viewer,
- PhabricatorHomeApplication::DASHBOARD_DEFAULT,
- 'PhabricatorHomeApplication');
- if ($have_dashboard) {
- $content = pht(
- "=== Customize Home Page ===\n\n".
- "You've installed a default dashboard to replace this welcome screen ".
- "on the home page. ".
- "You can still visit the welcome screen here at any time if you ".
- "have steps you want to complete later, or if you feel lonely. ".
- "If you've changed your mind about the dashboard you installed, ".
- "you can install a different default dashboard with the ".
- "**[[ %s | Dashboards Application ]]**.",
- $dashboard_href);
- $icon = 'fa-check-square-o green';
- } else {
- $content = pht(
- "=== Customize Home Page ===\n\n".
- "When you're done setting things up, you can create a custom ".
- "dashboard and install it. Your dashboard will replace this ".
- "welcome screen on the Phabricator home page. ".
- "Dashboards can show users the information that's most important to ".
- "your organization. You can configure them to display things like: ".
- "a custom welcome message, a feed of recent activity, or a list of ".
- "open tasks, waiting reviews, recent commits, and so on. ".
- "After you install a default dashboard, it will replace this page. ".
- "You can find this page later by visiting the **Config** ".
- "application, under **Welcome Page**. ".
- "To get started building a dashboard, use the ".
- "**[[ %s | Dashboards Application ]]**. ",
- $dashboard_href);
- $icon = 'fa-info-circle';
- }
-
- $setup[] = $this->newItem(
- $request,
- $icon,
- $content);
-
- $apps_href = PhabricatorEnv::getURI('/applications/');
- $content = pht(
- "=== Explore Applications ===\n\n".
- "Phabricator is a large suite of applications that work together to ".
- "help you develop software, manage tasks, and communicate. A few of ".
- "the most commonly used applications are pinned to the left navigation ".
- "bar by default.\n\n".
- "To explore all of the Phabricator applications, adjust settings, or ".
- "uninstall applications you don't plan to use, visit the ".
- "**[[ %s | Applications Application ]]**. You can also click the ".
- "**Applications** button in the left navigation menu, or search for an ".
- "application by name in the main menu bar. ",
- $apps_href);
-
- $explore = array();
- $explore[] = $this->newItem(
- $request,
- 'fa-globe',
- $content);
-
- // TODO: Restore some sort of "Support" link here, but just nuke it for
- // now as we figure stuff out.
-
- $differential_uri = PhabricatorEnv::getURI('/differential/');
- $differential_create_uri = PhabricatorEnv::getURI(
- '/differential/diff/create/');
- $differential_all_uri = PhabricatorEnv::getURI('/differential/query/all/');
-
- $differential_user_guide = PhabricatorEnv::getDoclink(
- 'Differential User Guide');
- $differential_vs_uri = PhabricatorEnv::getDoclink(
- 'User Guide: Review vs Audit');
-
- $quick = array();
- $quick[] = $this->newItem(
- $request,
- 'fa-gear',
- pht(
- "=== Quick Start: Code Review ===\n\n".
- "Review code with **[[ %s | Differential ]]**. ".
- "Engineers can use Differential to share, review, and approve ".
- "changes to source code. ".
- "To get started with code review:\n\n".
- " - **[[ %s | Create a Revision ]]** //(Copy and paste a diff from ".
- " the command line into the web UI to quickly get a feel for ".
- " review.)//\n".
- " - **[[ %s | View All Revisions ]]**\n\n".
- "For more information, see these articles in the documentation:\n\n".
- " - **[[ %s | Differential User Guide ]]**, for a general overview ".
- " of Differential.\n".
- " - **[[ %s | User Guide: Review vs Audit ]]**, for a discussion ".
- " of different code review workflows.",
- $differential_uri,
- $differential_create_uri,
- $differential_all_uri,
- $differential_user_guide,
- $differential_vs_uri));
-
-
- $maniphest_uri = PhabricatorEnv::getURI('/maniphest/');
- $maniphest_create_uri = PhabricatorEnv::getURI('/maniphest/task/edit/');
- $maniphest_all_uri = PhabricatorEnv::getURI('/maniphest/query/all/');
- $quick[] = $this->newItem(
- $request,
- 'fa-anchor',
- pht(
- "=== Quick Start: Bugs and Tasks ===\n\n".
- "Track bugs and tasks in Phabricator with ".
- "**[[ %s | Maniphest ]]**. ".
- "Users in all roles can use Maniphest to manage current and ".
- "planned work and to track bugs and issues. ".
- "To get started with bugs and tasks:\n\n".
- " - **[[ %s | Create a Task ]]**\n".
- " - **[[ %s | View All Tasks ]]**\n",
- $maniphest_uri,
- $maniphest_create_uri,
- $maniphest_all_uri));
-
-
- $pholio_uri = PhabricatorEnv::getURI('/pholio/');
- $pholio_create_uri = PhabricatorEnv::getURI('/pholio/new/');
- $pholio_all_uri = PhabricatorEnv::getURI('/pholio/query/all/');
-
- $quick[] = $this->newItem(
- $request,
- 'fa-camera-retro',
- pht(
- "=== Quick Start: Design Review ===\n\n".
- "Review proposed designs with **[[ %s | Pholio ]]**. ".
- "Designers can use Pholio to share images of what they're working on ".
- "and show off things they've made. ".
- "To get started with design review:\n\n".
- " - **[[ %s | Create a Mock ]]**\n".
- " - **[[ %s | View All Mocks ]]**",
- $pholio_uri,
- $pholio_create_uri,
- $pholio_all_uri));
-
-
- $diffusion_uri = PhabricatorEnv::getURI('/diffusion/edit/');
- $diffusion_create_uri = PhabricatorEnv::getURI('/diffusion/create/');
- $diffusion_all_uri = PhabricatorEnv::getURI('/diffusion/query/all/');
-
- $diffusion_user_guide = PhabricatorEnv::getDoclink('Diffusion User Guide');
- $diffusion_setup_guide = PhabricatorEnv::getDoclink(
- 'Diffusion User Guide: Repository Hosting');
-
- $quick[] = $this->newItem(
- $request,
- 'fa-code',
- pht(
- "=== Quick Start: Repositories ===\n\n".
- "Manage and browse source code repositories with ".
- "**[[ %s | Diffusion ]]**. ".
- "Engineers can use Diffusion to browse and audit source code. ".
- "You can configure Phabricator to host repositories, or have it ".
- "track existing repositories hosted elsewhere (like GitHub, ".
- "Bitbucket, or an internal server). ".
- "To get started with repositories:\n\n".
- " - **[[ %s | Create a New Repository ]]**\n".
- " - **[[ %s | View All Repositories ]]**\n\n".
- "For more information, see these articles in the documentation:\n\n".
- " - **[[ %s | Diffusion User Guide ]]**, for a general overview of ".
- " Diffusion.\n".
- " - **[[ %s | Diffusion User Guide: Repository Hosting ]]**, ".
- " for instructions on configuring repository hosting.\n\n".
- "Phabricator supports Git, Mercurial and Subversion.",
- $diffusion_uri,
- $diffusion_create_uri,
- $diffusion_all_uri,
- $diffusion_user_guide,
- $diffusion_setup_guide));
-
- $setup_header = new PHUIRemarkupView(
- $viewer, pht('=Setup and Configuration'));
-
- $explore_header = new PHUIRemarkupView(
- $viewer, pht('=Explore Phabricator'));
-
- $quick_header = new PHUIRemarkupView(
- $viewer, pht('=Quick Start Guide'));
-
- $document = id(new PHUIDocumentViewPro())
- ->setFluid(true)
- ->appendChild($setup_header)
- ->appendChild($setup)
- ->appendChild($explore_header)
- ->appendChild($explore)
- ->appendChild($quick_header)
- ->appendChild($quick);
-
- return id(new PHUIBoxView())
- ->appendChild($document);
- }
-
- private function newItem(AphrontRequest $request, $icon, $content) {
- $viewer = $request->getUser();
-
- $icon = id(new PHUIIconView())
- ->setIcon($icon.' fa-2x');
-
- $content = new PHUIRemarkupView($viewer, $content);
-
- $icon = phutil_tag(
- 'div',
- array(
- 'class' => 'config-welcome-icon',
- ),
- $icon);
-
- $content = phutil_tag(
- 'div',
- array(
- 'class' => 'config-welcome-content',
- ),
- $content);
-
- $view = phutil_tag(
- 'div',
- array(
- 'class' => 'config-welcome-box grouped',
- ),
- array(
- $icon,
- $content,
- ));
-
- return $view;
- }
-
-}
diff --git a/src/applications/guides/application/PhabricatorGuideApplication.php b/src/applications/guides/application/PhabricatorGuideApplication.php
--- a/src/applications/guides/application/PhabricatorGuideApplication.php
+++ b/src/applications/guides/application/PhabricatorGuideApplication.php
@@ -18,10 +18,6 @@
return 'fa-map-o';
}
- public function isPrototype() {
- return true;
- }
-
public function getApplicationGroup() {
return self::GROUP_UTILITIES;
}
diff --git a/src/applications/guides/controller/PhabricatorGuideController.php b/src/applications/guides/controller/PhabricatorGuideController.php
--- a/src/applications/guides/controller/PhabricatorGuideController.php
+++ b/src/applications/guides/controller/PhabricatorGuideController.php
@@ -8,7 +8,7 @@
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
$nav->addLabel(pht('Guides'));
- $modules = PhabricatorGuideModule::getAllModules();
+ $modules = PhabricatorGuideModule::getEnabledModules();
foreach ($modules as $key => $module) {
$nav->addFilter($key.'/', $module->getModuleName());
}
diff --git a/src/applications/guides/controller/PhabricatorGuideModuleController.php b/src/applications/guides/controller/PhabricatorGuideModuleController.php
--- a/src/applications/guides/controller/PhabricatorGuideModuleController.php
+++ b/src/applications/guides/controller/PhabricatorGuideModuleController.php
@@ -7,10 +7,11 @@
$viewer = $this->getViewer();
$key = $request->getURIData('module');
+ $all_modules = PhabricatorGuideModule::getEnabledModules();
+
if (!$key) {
- $key = 'welcome';
+ $key = key($all_modules);
}
- $all_modules = PhabricatorGuideModule::getAllModules();
$nav = $this->buildSideNavView();
$nav->selectFilter($key.'/');
diff --git a/src/applications/guides/module/PhabricatorGuideInstallModule.php b/src/applications/guides/module/PhabricatorGuideInstallModule.php
--- a/src/applications/guides/module/PhabricatorGuideInstallModule.php
+++ b/src/applications/guides/module/PhabricatorGuideInstallModule.php
@@ -14,6 +14,13 @@
return 20;
}
+ public function getIsModuleEnabled() {
+ if (PhabricatorEnv::getEnvConfig('cluster.instance')) {
+ return false;
+ }
+ return true;
+ }
+
public function renderModuleStatus(AphrontRequest $request) {
$viewer = $request->getViewer();
@@ -25,13 +32,11 @@
if ($issues_resolved) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
"You've resolved (or ignored) all outstanding setup issues.");
} else {
$icon = 'fa-warning';
$icon_bg = 'bg-red';
- $skip = '#';
$description =
pht('You have some unresolved setup issues to take care of.');
}
@@ -41,7 +46,6 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
@@ -55,13 +59,11 @@
if ($have_auth) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
"You've configured at least one authentication provider.");
} else {
$icon = 'fa-key';
$icon_bg = 'bg-sky';
- $skip = '#';
$description = pht(
'Authentication providers allow users to register accounts and '.
'log in to Phabricator.');
@@ -72,7 +74,6 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
@@ -88,13 +89,11 @@
if ($have_config) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
"You've configured at least one setting from the web interface.");
} else {
$icon = 'fa-sliders';
$icon_bg = 'bg-sky';
- $skip = '#';
$description = pht(
'Learn how to configure mail and other options in Phabricator.');
}
@@ -104,7 +103,6 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
@@ -120,13 +118,11 @@
if ($have_settings) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
"You've adjusted at least one setting on your account.");
} else {
$icon = 'fa-wrench';
$icon_bg = 'bg-sky';
- $skip = '#';
$description = pht(
'Configure account settings for all users, or just yourself');
}
@@ -136,25 +132,21 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
$title = pht('Notification Server');
- $href = PhabricatorEnv::getURI('/config/notifications/');
- // TODO: Wire up a notifications check
- $have_notifications = false;
+ $href = PhabricatorEnv::getURI('/config/edit/notification.servers/');
+ $have_notifications = PhabricatorEnv::getEnvConfig('notification.servers');
if ($have_notifications) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
"You've set up a real-time notification server.");
} else {
$icon = 'fa-bell';
$icon_bg = 'bg-sky';
- $skip = '#';
$description = pht(
'Phabricator can deliver notifications in real-time with WebSockets.');
}
@@ -164,12 +156,23 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
- return $guide_items;
+ $intro = pht(
+ 'Phabricator has been successfully installed. These next guides will '.
+ 'take you through configuration and new user orientation. '.
+ 'These steps are optional, and you can go through them in any order. '.
+ 'If you want to get back to this guide later on, you can find it in '.
+ '{icon globe} **Applications** under {icon map-o} **Guides**.');
+
+ $intro = new PHUIRemarkupView($viewer, $intro);
+
+ $intro = id(new PHUIDocumentViewPro())
+ ->appendChild($intro);
+
+ return array($intro, $guide_items);
}
diff --git a/src/applications/guides/module/PhabricatorGuideModule.php b/src/applications/guides/module/PhabricatorGuideModule.php
--- a/src/applications/guides/module/PhabricatorGuideModule.php
+++ b/src/applications/guides/module/PhabricatorGuideModule.php
@@ -5,6 +5,7 @@
abstract public function getModuleKey();
abstract public function getModuleName();
abstract public function getModulePosition();
+ abstract public function getIsModuleEnabled();
abstract public function renderModuleStatus(AphrontRequest $request);
final public static function getAllModules() {
@@ -15,4 +16,13 @@
->execute();
}
+ final public static function getEnabledModules() {
+ return id(new PhutilClassMapQuery())
+ ->setAncestorClass(__CLASS__)
+ ->setUniqueMethod('getModuleKey')
+ ->setSortMethod('getModulePosition')
+ ->setFilterMethod('getIsModuleEnabled')
+ ->execute();
+ }
+
}
diff --git a/src/applications/guides/module/PhabricatorGuideQuickStartModule.php b/src/applications/guides/module/PhabricatorGuideQuickStartModule.php
--- a/src/applications/guides/module/PhabricatorGuideQuickStartModule.php
+++ b/src/applications/guides/module/PhabricatorGuideQuickStartModule.php
@@ -14,26 +14,32 @@
return 30;
}
+ public function getIsModuleEnabled() {
+ return true;
+ }
+
public function renderModuleStatus(AphrontRequest $request) {
$viewer = $request->getViewer();
+ $instance = PhabricatorEnv::getEnvConfig('cluster.instance');
$guide_items = new PhabricatorGuideListView();
- $title = pht('Configure Applications');
- $apps_check = true;
- $href = PhabricatorEnv::getURI('/applications/');
- if ($apps_check) {
+ $title = pht('Create a Repository');
+ $repository_check = id(new PhabricatorRepositoryQuery())
+ ->setViewer($viewer)
+ ->execute();
+ $href = PhabricatorEnv::getURI('/diffusion/');
+ if ($repository_check) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
- "You've uninstalled any unneeded applications for now.");
+ "You've created at least one repository.");
} else {
- $icon = 'fa-globe';
+ $icon = 'fa-code';
$icon_bg = 'bg-sky';
- $skip = '#';
$description =
- pht('Use all our applications, or uninstall the ones you don\'t want.');
+ pht('If you are here for code review, let\'s set up your first '.
+ 'repository.');
}
$item = id(new PhabricatorGuideItemView())
@@ -41,26 +47,26 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
- $title = pht('Invite Collaborators');
- $people_check = true;
- $href = PhabricatorEnv::getURI('/people/invite/');
- if ($people_check) {
+ $title = pht('Create a Project');
+ $project_check = id(new PhabricatorProjectQuery())
+ ->setViewer($viewer)
+ ->execute();
+ $href = PhabricatorEnv::getURI('/project/');
+ if ($project_check) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
- 'You will not be alone on this journey.');
+ "You've created at least one project.");
} else {
- $icon = 'fa-group';
+ $icon = 'fa-briefcase';
$icon_bg = 'bg-sky';
- $skip = '#';
$description =
- pht('Invite the rest of your team to get started on Phabricator.');
+ pht('Project tags define everything. Create them for teams, tags, '.
+ 'or actual projects.');
}
$item = id(new PhabricatorGuideItemView())
@@ -68,27 +74,25 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
- $title = pht('Create a Repository');
- $repository_check = true;
- $href = PhabricatorEnv::getURI('/diffusion/');
- if ($repository_check) {
+ $title = pht('Create a Task');
+ $task_check = id(new ManiphestTaskQuery())
+ ->setViewer($viewer)
+ ->execute();
+ $href = PhabricatorEnv::getURI('/maniphest/');
+ if ($task_check) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
- "You've created at least one repository.");
+ "You've created at least one task.");
} else {
- $icon = 'fa-code';
+ $icon = 'fa-anchor';
$icon_bg = 'bg-sky';
- $skip = '#';
$description =
- pht('If you are here for code review, let\'s set up your first '.
- 'repository.');
+ pht('Create some work for the interns in Maniphest.');
}
$item = id(new PhabricatorGuideItemView())
@@ -96,27 +100,25 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
-
- $title = pht('Create a Project');
- $project_check = true;
- $href = PhabricatorEnv::getURI('/project/');
- if ($project_check) {
+ $title = pht('Build a Dashboard');
+ $have_dashboard = (bool)PhabricatorDashboardInstall::getDashboard(
+ $viewer,
+ PhabricatorHomeApplication::DASHBOARD_DEFAULT,
+ 'PhabricatorHomeApplication');
+ $href = PhabricatorEnv::getURI('/dashboard/');
+ if ($have_dashboard) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
- "You've created at least one project.");
+ "You've created at least one dashboard.");
} else {
- $icon = 'fa-briefcase';
+ $icon = 'fa-dashboard';
$icon_bg = 'bg-sky';
- $skip = '#';
$description =
- pht('Project tags define everything. Create them for teams, tags, '.
- 'or actual projects.');
+ pht('Customize the default homepage layout and items.');
}
$item = id(new PhabricatorGuideItemView())
@@ -124,26 +126,24 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
- $title = pht('Build a Dashboard');
- $dashboard_check = true;
- $href = PhabricatorEnv::getURI('/dashboard/');
- if ($dashboard_check) {
+ $title = pht('Personalize your Install');
+ $wordmark = PhabricatorEnv::getEnvConfig('ui.logo');
+ $href = PhabricatorEnv::getURI('/config/edit/ui.logo/');
+ if ($wordmark) {
$icon = 'fa-check';
$icon_bg = 'bg-green';
- $skip = null;
$description = pht(
- "You've created at least one dashboard.");
+ 'It looks amazing, good work. Home Sweet Home.');
} else {
- $icon = 'fa-dashboard';
+ $icon = 'fa-home';
$icon_bg = 'bg-sky';
- $skip = '#';
$description =
- pht('Customize the default homepage layout and items.');
+ pht('Change the name and add your company logo, just to give it a '.
+ 'little extra polish.');
}
$item = id(new PhabricatorGuideItemView())
@@ -151,27 +151,43 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
+ $title = pht('Explore Applications');
+ $href = PhabricatorEnv::getURI('/applications/');
+ $icon = 'fa-globe';
+ $icon_bg = 'bg-sky';
+ $description =
+ pht('See all the applications included in Phabricator.');
- $title = pht('Personalize your Install');
- $ui_check = true;
- $href = PhabricatorEnv::getURI('/config/group/ui/');
- if ($dashboard_check) {
- $icon = 'fa-check';
- $icon_bg = 'bg-green';
- $skip = null;
- $description = pht(
- 'It looks amazing, good work. Home Sweet Home.');
- } else {
- $icon = 'fa-home';
- $icon_bg = 'bg-sky';
- $skip = '#';
- $description =
- pht('Change the name and add your company logo, just to give it a '.
- 'little extra polish.');
+ $item = id(new PhabricatorGuideItemView())
+ ->setTitle($title)
+ ->setHref($href)
+ ->setIcon($icon)
+ ->setIconBackground($icon_bg)
+ ->setDescription($description);
+ $guide_items->addItem($item);
+
+ if (!$instance) {
+ $title = pht('Invite Collaborators');
+ $people_check = id(new PhabricatorPeopleQuery())
+ ->setViewer($viewer)
+ ->execute();
+ $people = count($people_check);
+ $href = PhabricatorEnv::getURI('/people/invite/send/');
+ if ($people > 1) {
+ $icon = 'fa-check';
+ $icon_bg = 'bg-green';
+ $description = pht(
+ 'Your invitations have been accepted. You will not be alone on '.
+ 'this journey.');
+ } else {
+ $icon = 'fa-group';
+ $icon_bg = 'bg-sky';
+ $description =
+ pht('Invite the rest of your team to get started on Phabricator.');
+ }
}
$item = id(new PhabricatorGuideItemView())
@@ -179,11 +195,21 @@
->setHref($href)
->setIcon($icon)
->setIconBackground($icon_bg)
- ->setSkipHref($skip)
->setDescription($description);
$guide_items->addItem($item);
- return $guide_items;
+ $intro = pht(
+ 'If your new to Phabricator, these optional steps can help you learn '.
+ 'the basics. Conceptually, Phabricator is structured as a graph, and '.
+ 'repositories, tasks, and projects are all independent from each other. '.
+ 'Feel free to set up Phabricator for how you work best, and explore '.
+ 'these features at your own pace.');
+
+ $intro = new PHUIRemarkupView($viewer, $intro);
+ $intro = id(new PHUIDocumentViewPro())
+ ->appendChild($intro);
+
+ return array($intro, $guide_items);
}
diff --git a/src/applications/guides/module/PhabricatorGuideWelcomeModule.php b/src/applications/guides/module/PhabricatorGuideWelcomeModule.php
deleted file mode 100644
--- a/src/applications/guides/module/PhabricatorGuideWelcomeModule.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-final class PhabricatorGuideWelcomeModule extends PhabricatorGuideModule {
-
- public function getModuleKey() {
- return 'welcome';
- }
-
- public function getModuleName() {
- return pht('Welcome');
- }
-
- public function getModulePosition() {
- return 10;
- }
-
- public function renderModuleStatus(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $content = pht(
- 'You have successfully installed Phabricator. These next guides will '.
- 'take you through configuration and new user orientation. '.
- 'These steps are optional, and you can go through them in any order. '.
- 'If you want to get back to this guide later on, you can find it in '.
- 'the **Config** application under **Welcome Guide**.');
-
- $content = new PHUIRemarkupView($viewer, $content);
-
- return id(new PHUIDocumentViewPro())
- ->appendChild($content);
-
- }
-
-}
diff --git a/src/applications/home/controller/PhabricatorHomeMainController.php b/src/applications/home/controller/PhabricatorHomeMainController.php
--- a/src/applications/home/controller/PhabricatorHomeMainController.php
+++ b/src/applications/home/controller/PhabricatorHomeMainController.php
@@ -209,7 +209,7 @@
$content = pht(<<<EOT
Welcome to Phabricator, here are some links to get you started:
- [[ /config/ | Configure Phabricator ]]
-- [[ /config/welcome/ | Quick Start Guide ]]
+- [[ /guides/ | Quick Start Guide ]]
- [[ /diffusion/ | Create a Repository ]]
- [[ /people/invite/send/ | Invite People ]]
- [[ https://twitter.com/phabricator/ | Follow us on Twitter ]]
@@ -218,7 +218,7 @@
} else {
$content = pht(<<<EOT
Welcome to Phabricator, here are some links to get you started:
-- [[ /config/welcome/ | Quick Start Guide ]]
+- [[ /guides/ | Quick Start Guide ]]
- [[ /diffusion/ | Create a Repository ]]
- [[ https://twitter.com/phabricator/ | Follow us on Twitter ]]
EOT
diff --git a/src/view/layout/AphrontSideNavFilterView.php b/src/view/layout/AphrontSideNavFilterView.php
--- a/src/view/layout/AphrontSideNavFilterView.php
+++ b/src/view/layout/AphrontSideNavFilterView.php
@@ -95,9 +95,9 @@
return $this->menu;
}
- public function addFilter($key, $name, $uri = null) {
+ public function addFilter($key, $name, $uri = null, $icon = null) {
return $this->addThing(
- $key, $name, $uri, PHUIListItemView::TYPE_LINK);
+ $key, $name, $uri, PHUIListItemView::TYPE_LINK, $icon);
}
public function addButton($key, $name, $uri = null) {
@@ -105,11 +105,15 @@
$key, $name, $uri, PHUIListItemView::TYPE_BUTTON);
}
- private function addThing($key, $name, $uri, $type) {
+ private function addThing($key, $name, $uri, $type, $icon) {
$item = id(new PHUIListItemView())
->setName($name)
->setType($type);
+ if (strlen($icon)) {
+ $item->setIcon($icon);
+ }
+
if (strlen($key)) {
$item->setKey($key);
diff --git a/webroot/rsrc/css/application/config/config-welcome.css b/webroot/rsrc/css/application/config/config-welcome.css
deleted file mode 100644
--- a/webroot/rsrc/css/application/config/config-welcome.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * @provides config-welcome-css
- */
-
-.phui-document-content .config-welcome-box .phabricator-remarkup {
- padding: 0 16px 16px;
- position: relative;
-}
-
-.config-welcome-box {
- padding: 8px 0;
-}
-
-.config-welcome-content {
- margin-left: 44px;
-}
-
-.config-welcome-box .config-welcome-icon {
- width: 32px;
- float: left;
- text-align: center;
-}
-
-.phui-document-view-pro .phui-document-content .config-welcome-box
- .phabricator-remarkup {
- margin: 0;
- padding: 0;
- }

File Metadata

Mime Type
text/plain
Expires
Thu, May 16, 6:28 PM (1 w, 5 d ago)
Storage Engine
amazon-s3
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
phabricator/secure/mm/aw/hncnllu5ddqjqloa
Default Alt Text
D16482.diff (42 KB)

Event Timeline