Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15407199
D16449.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
16 KB
Referenced Files
None
Subscribers
None
D16449.id.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D16449: New 'default' homepage
Attached
Detach File
Event Timeline
Log In to Comment