Page MenuHomePhabricator

D16449.id.diff
No OneTemporary

D16449.id.diff

diff --git a/src/applications/differential/view/DifferentialRevisionListView.php b/src/applications/differential/view/DifferentialRevisionListView.php
--- a/src/applications/differential/view/DifferentialRevisionListView.php
+++ b/src/applications/differential/view/DifferentialRevisionListView.php
@@ -7,7 +7,6 @@
private $revisions;
private $handles;
- private $highlightAge;
private $header;
private $noDataString;
private $noBox;
@@ -39,11 +38,6 @@
return $this;
}
- public function setHighlightAge($bool) {
- $this->highlightAge = $bool;
- return $this;
- }
-
public function setNoBox($box) {
$this->noBox = $box;
return $this;
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
@@ -2,8 +2,6 @@
final class PhabricatorHomeMainController extends PhabricatorHomeController {
- private $minipanels = array();
-
public function shouldAllowPublic() {
return true;
}
@@ -13,32 +11,27 @@
}
public function handleRequest(AphrontRequest $request) {
- $user = $request->getUser();
+ $viewer = $request->getViewer();
$dashboard = PhabricatorDashboardInstall::getDashboard(
- $user,
- $user->getPHID(),
+ $viewer,
+ $viewer->getPHID(),
get_class($this->getCurrentApplication()));
if (!$dashboard) {
$dashboard = PhabricatorDashboardInstall::getDashboard(
- $user,
+ $viewer,
PhabricatorHomeApplication::DASHBOARD_DEFAULT,
get_class($this->getCurrentApplication()));
}
if ($dashboard) {
$content = id(new PhabricatorDashboardRenderingEngine())
- ->setViewer($user)
+ ->setViewer($viewer)
->setDashboard($dashboard)
->renderDashboard();
} else {
- $project_query = new PhabricatorProjectQuery();
- $project_query->setViewer($user);
- $project_query->withMemberPHIDs(array($user->getPHID()));
- $projects = $project_query->execute();
-
- $content = $this->buildMainResponse($projects);
+ $content = $this->buildMainResponse();
}
if (!$request->getURIData('only')) {
@@ -46,7 +39,7 @@
$nav->appendChild(
array(
$content,
- id(new PhabricatorGlobalUploadTargetView())->setUser($user),
+ id(new PhabricatorGlobalUploadTargetView())->setUser($viewer),
));
$content = $nav;
}
@@ -58,354 +51,180 @@
}
- private function buildMainResponse(array $projects) {
- assert_instances_of($projects, 'PhabricatorProject');
- $viewer = $this->getRequest()->getUser();
+ private function buildMainResponse() {
+ require_celerity_resource('phabricator-dashboard-css');
+ $viewer = $this->getViewer();
$has_maniphest = PhabricatorApplication::isClassInstalledForViewer(
'PhabricatorManiphestApplication',
$viewer);
- $has_audit = PhabricatorApplication::isClassInstalledForViewer(
- 'PhabricatorAuditApplication',
+ $has_diffusion = PhabricatorApplication::isClassInstalledForViewer(
+ 'PhabricatorDiffusionApplication',
$viewer);
$has_differential = PhabricatorApplication::isClassInstalledForViewer(
'PhabricatorDifferentialApplication',
$viewer);
+ $revision_panel = null;
+ if ($has_differential) {
+ $revision_panel = $this->buildRevisionPanel();
+ }
+
+ $tasks_panel = null;
if ($has_maniphest) {
- $unbreak_panel = $this->buildUnbreakNowPanel();
- $triage_panel = $this->buildNeedsTriagePanel($projects);
$tasks_panel = $this->buildTasksPanel();
- } else {
- $unbreak_panel = null;
- $triage_panel = null;
- $tasks_panel = null;
}
- if ($has_audit) {
- $audit_panel = $this->buildAuditPanel();
- $commit_panel = $this->buildCommitPanel();
- } else {
- $audit_panel = null;
- $commit_panel = null;
+ $repository_panel = null;
+ if ($has_diffusion) {
+ $repository_panel = $this->buildRepositoryPanel();
}
- if (PhabricatorEnv::getEnvConfig('welcome.html') !== null) {
- $welcome_panel = $this->buildWelcomePanel();
- } else {
- $welcome_panel = null;
- }
+ $feed_panel = $this->buildFeedPanel();
- if ($has_differential) {
- $revision_panel = $this->buildRevisionPanel();
- } else {
- $revision_panel = null;
- }
+ $dashboard = id(new AphrontMultiColumnView())
+ ->setFluidlayout(true)
+ ->setGutter(AphrontMultiColumnView::GUTTER_LARGE);
- $home = phutil_tag(
+ $main_panel = phutil_tag(
'div',
array(
'class' => 'homepage-panel',
),
array(
- $welcome_panel,
- $unbreak_panel,
- $triage_panel,
$revision_panel,
$tasks_panel,
- $audit_panel,
- $commit_panel,
- $this->minipanels,
+ $repository_panel,
));
- return $home;
- }
-
- private function buildUnbreakNowPanel() {
- $unbreak_now = PhabricatorEnv::getEnvConfig(
- 'maniphest.priorities.unbreak-now');
- if (!$unbreak_now) {
- return null;
- }
-
- $user = $this->getRequest()->getUser();
-
- $task_query = id(new ManiphestTaskQuery())
- ->setViewer($user)
- ->withStatuses(ManiphestTaskStatus::getOpenStatusConstants())
- ->withPriorities(array($unbreak_now))
- ->needProjectPHIDs(true)
- ->setLimit(10);
-
- $tasks = $task_query->execute();
-
- if (!$tasks) {
- return $this->renderMiniPanel(
- pht('No "Unbreak Now!" Tasks'),
- pht('Nothing appears to be critically broken right now.'));
- }
-
- $href = urisprintf(
- '/maniphest/?statuses=open()&priorities=%s#R',
- $unbreak_now);
- $title = pht('Unbreak Now!');
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
- $panel->setObjectList($this->buildTaskListView($tasks));
-
- return $panel;
- }
-
- private function buildNeedsTriagePanel(array $projects) {
- assert_instances_of($projects, 'PhabricatorProject');
-
- $needs_triage = PhabricatorEnv::getEnvConfig(
- 'maniphest.priorities.needs-triage');
- if (!$needs_triage) {
- return null;
- }
-
- $user = $this->getRequest()->getUser();
- if (!$user->isLoggedIn()) {
- return null;
- }
-
- if ($projects) {
- $task_query = id(new ManiphestTaskQuery())
- ->setViewer($user)
- ->withStatuses(ManiphestTaskStatus::getOpenStatusConstants())
- ->withPriorities(array($needs_triage))
- ->withEdgeLogicPHIDs(
- PhabricatorProjectObjectHasProjectEdgeType::EDGECONST,
- PhabricatorQueryConstraint::OPERATOR_OR,
- mpull($projects, 'getPHID'))
- ->needProjectPHIDs(true)
- ->setLimit(10);
- $tasks = $task_query->execute();
- } else {
- $tasks = array();
- }
-
- if (!$tasks) {
- return $this->renderMiniPanel(
- pht('No "Needs Triage" Tasks'),
- pht('No tasks tagged with projects you are a member of need triage.'));
- }
-
- $title = pht('Needs Triage');
- $href = urisprintf(
- '/maniphest/?statuses=open()&priorities=%s&projects=projects(%s)#R',
- $needs_triage,
- $user->getPHID());
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
- $panel->setObjectList($this->buildTaskListView($tasks));
-
- return $panel;
- }
-
- private function buildRevisionPanel() {
- $viewer = $this->getViewer();
-
- $revisions = PhabricatorDifferentialApplication::loadNeedAttentionRevisions(
- $viewer);
-
- if (!$revisions) {
- return $this->renderMiniPanel(
- pht('No Waiting Revisions'),
- pht('No revisions are waiting on you.'));
- }
-
- $title = pht('Revisions Waiting on You');
- $href = '/differential/';
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
-
- $revision_view = id(new DifferentialRevisionListView())
- ->setHighlightAge(true)
- ->setRevisions($revisions)
- ->setUser($viewer);
-
- $phids = array_merge(
- array($viewer->getPHID()),
- $revision_view->getRequiredHandlePHIDs());
- $handles = $this->loadViewerHandles($phids);
+ $dashboard->addColumn($main_panel, 'thirds');
- $revision_view->setHandles($handles);
-
- $list_view = $revision_view->render();
-
- $panel->setObjectList($list_view);
-
- return $panel;
- }
-
- private function buildWelcomePanel() {
- $panel = new PHUIObjectBoxView();
- $panel->setHeaderText(pht('Welcome'));
- $panel->appendChild(
- phutil_safe_html(
- PhabricatorEnv::getEnvConfig('welcome.html')));
-
- return $panel;
- }
-
- private function buildTasksPanel() {
- $user = $this->getRequest()->getUser();
- $user_phid = $user->getPHID();
-
- $task_query = id(new ManiphestTaskQuery())
- ->setViewer($user)
- ->withStatuses(ManiphestTaskStatus::getOpenStatusConstants())
- ->setGroupBy(ManiphestTaskQuery::GROUP_PRIORITY)
- ->withOwners(array($user_phid))
- ->needProjectPHIDs(true)
- ->setLimit(10);
-
- $tasks = $task_query->execute();
-
-
- if (!$tasks) {
- return $this->renderMiniPanel(
- pht('No Assigned Tasks'),
- pht('You have no assigned tasks.'));
- }
-
- $title = pht('Assigned Tasks');
- $href = '/maniphest/query/assigned/';
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
- $panel->setObjectList($this->buildTaskListView($tasks));
-
- return $panel;
- }
-
- private function buildTaskListView(array $tasks) {
- assert_instances_of($tasks, 'ManiphestTask');
- $user = $this->getRequest()->getUser();
-
- $phids = array_merge(
- array_filter(mpull($tasks, 'getOwnerPHID')),
- array_mergev(mpull($tasks, 'getProjectPHIDs')));
-
- $handles = $this->loadViewerHandles($phids);
+ $side_panel = phutil_tag(
+ 'div',
+ array(
+ 'class' => 'homepage-side-panel',
+ ),
+ array(
+ $feed_panel,
+ ));
+ $dashboard->addColumn($side_panel, 'third');
- $view = new ManiphestTaskListView();
- $view->setTasks($tasks);
- $view->setUser($user);
- $view->setHandles($handles);
+ $view = id(new PHUIBoxView())
+ ->addClass('dashboard-view')
+ ->appendChild($dashboard);
- return $view;
+ return $view;
}
- private function renderSectionHeader($title, $href) {
+ private function buildHomepagePanel($title, $href, $view) {
$title = phutil_tag(
'a',
array(
'href' => $href,
),
$title);
+
$icon = id(new PHUIIconView())
->setIcon('fa-search')
->setHref($href);
+
$header = id(new PHUIHeaderView())
->setHeader($title)
->addActionItem($icon);
- return $header;
- }
- private function renderMiniPanel($title, $body) {
- $panel = new PHUIInfoView();
- $panel->setSeverity(PHUIInfoView::SEVERITY_NODATA);
- $panel->appendChild(
- phutil_tag(
- 'p',
- array(
- ),
- array(
- phutil_tag('strong', array(), $title.': '),
- $body,
- )));
- $this->minipanels[] = $panel;
- }
+ $box = id(new PHUIObjectBoxView())
+ ->setHeader($header);
- public function buildAuditPanel() {
- $request = $this->getRequest();
- $user = $request->getUser();
-
- $phids = PhabricatorAuditCommentEditor::loadAuditPHIDsForUser($user);
-
- $query = id(new DiffusionCommitQuery())
- ->setViewer($user)
- ->withNeedsAuditByPHIDs($phids)
- ->withAuditStatus(DiffusionCommitQuery::AUDIT_STATUS_OPEN)
- ->needAuditRequests(true)
- ->needCommitData(true)
- ->setLimit(10);
+ if ($view->getObjectList()) {
+ $box->setObjectList($view->getObjectList());
+ }
+ if ($view->getContent()) {
+ $box->appendChild($view->getContent());
+ }
- $commits = $query->execute();
+ return $box;
+ }
- if (!$commits) {
- return $this->renderMinipanel(
- pht('No Audits'),
- pht('No commits are waiting for you to audit them.'));
+ private function buildRevisionPanel() {
+ $viewer = $this->getViewer();
+ if (!$viewer->isLoggedIn()) {
+ return null;
}
- $view = id(new PhabricatorAuditListView())
- ->setCommits($commits)
- ->setUser($user);
+ $engine = new DifferentialRevisionSearchEngine();
+ $engine->setViewer($viewer);
+ $saved = $engine->buildSavedQueryFromBuiltin('active');
+ $query = $engine->buildQueryFromSavedQuery($saved);
+ $pager = $engine->newPagerForSavedQuery($saved);
+ $pager->setPageSize(15);
+ $results = $engine->executeQuery($query, $pager);
+ $view = $engine->renderResults($results, $saved);
- $phids = $view->getRequiredHandlePHIDs();
- $handles = $this->loadViewerHandles($phids);
- $view->setHandles($handles);
+ $title = pht('Active Revisions');
+ $href = '/differential/query/active/';
- $title = pht('Audits');
- $href = '/audit/';
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
- $panel->setObjectList($view);
-
- return $panel;
+ return $this->buildHomepagePanel($title, $href, $view);
}
- public function buildCommitPanel() {
- $request = $this->getRequest();
- $user = $request->getUser();
+ private function buildTasksPanel() {
+ $viewer = $this->getViewer();
- $phids = array($user->getPHID());
+ $query = 'assigned';
+ $title = pht('Assigned Tasks');
+ $href = '/maniphest/query/assigned/';
+ if (!$viewer->isLoggedIn()) {
+ $query = 'open';
+ $title = pht('Open Tasks');
+ $href = '/maniphest/query/open/';
+ }
+
+ $engine = new ManiphestTaskSearchEngine();
+ $engine->setViewer($viewer);
+ $saved = $engine->buildSavedQueryFromBuiltin($query);
+ $query = $engine->buildQueryFromSavedQuery($saved);
+ $pager = $engine->newPagerForSavedQuery($saved);
+ $pager->setPageSize(15);
+ $results = $engine->executeQuery($query, $pager);
+ $view = $engine->renderResults($results, $saved);
+
+ return $this->buildHomepagePanel($title, $href, $view);
+ }
- $query = id(new DiffusionCommitQuery())
- ->setViewer($user)
- ->withAuthorPHIDs($phids)
- ->withAuditStatus(DiffusionCommitQuery::AUDIT_STATUS_CONCERN)
- ->needCommitData(true)
- ->needAuditRequests(true)
- ->setLimit(10);
+ public function buildFeedPanel() {
+ $viewer = $this->getViewer();
- $commits = $query->execute();
+ $engine = new PhabricatorFeedSearchEngine();
+ $engine->setViewer($viewer);
+ $saved = $engine->buildSavedQueryFromBuiltin('all');
+ $query = $engine->buildQueryFromSavedQuery($saved);
+ $pager = $engine->newPagerForSavedQuery($saved);
+ $pager->setPageSize(40);
+ $results = $engine->executeQuery($query, $pager);
+ $view = $engine->renderResults($results, $saved);
- if (!$commits) {
- return $this->renderMinipanel(
- pht('No Problem Commits'),
- pht('No one has raised concerns with your commits.'));
- }
+ $title = pht('Recent Activity');
+ $href = '/feed/';
- $view = id(new PhabricatorAuditListView())
- ->setCommits($commits)
- ->setUser($user);
+ return $this->buildHomepagePanel($title, $href, $view);
+ }
+
+ public function buildRepositoryPanel() {
+ $viewer = $this->getViewer();
- $phids = $view->getRequiredHandlePHIDs();
- $handles = $this->loadViewerHandles($phids);
- $view->setHandles($handles);
+ $engine = new PhabricatorRepositorySearchEngine();
+ $engine->setViewer($viewer);
+ $saved = $engine->buildSavedQueryFromBuiltin('active');
+ $query = $engine->buildQueryFromSavedQuery($saved);
+ $pager = $engine->newPagerForSavedQuery($saved);
+ $pager->setPageSize(5);
+ $results = $engine->executeQuery($query, $pager);
+ $view = $engine->renderResults($results, $saved);
- $title = pht('Problem Commits');
- $href = '/audit/';
- $panel = new PHUIObjectBoxView();
- $panel->setHeader($this->renderSectionHeader($title, $href));
- $panel->setObjectList($view);
+ $title = pht('Active Repositories');
+ $href = '/diffusion/';
- return $panel;
+ return $this->buildHomepagePanel($title, $href, $view);
}
}
diff --git a/src/applications/maniphest/view/ManiphestTaskResultListView.php b/src/applications/maniphest/view/ManiphestTaskResultListView.php
--- a/src/applications/maniphest/view/ManiphestTaskResultListView.php
+++ b/src/applications/maniphest/view/ManiphestTaskResultListView.php
@@ -41,7 +41,8 @@
// If we didn't match anything, just pick up the default empty state.
if (!$tasks) {
return id(new PHUIObjectItemListView())
- ->setUser($viewer);
+ ->setUser($viewer)
+ ->setNoDataString(pht('No tasks found.'));
}
$group_parameter = nonempty($query->getParameter('group'), 'priority');

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 19, 4:17 PM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7522610
Default Alt Text
D16449.id.diff (16 KB)

Event Timeline