Page MenuHomePhabricator

D11272.id.diff
No OneTemporary

D11272.id.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,7 +7,7 @@
*/
return array(
'names' => array(
- 'core.pkg.css' => 'b99369cc',
+ 'core.pkg.css' => '60a6d241',
'core.pkg.js' => '61af8961',
'darkconsole.pkg.js' => '8ab24e01',
'differential.pkg.css' => '8af45893',
@@ -23,7 +23,7 @@
'rsrc/css/aphront/error-view.css' => '3462dbee',
'rsrc/css/aphront/lightbox-attachment.css' => '7acac05d',
'rsrc/css/aphront/list-filter-view.css' => '2ae43867',
- 'rsrc/css/aphront/multi-column.css' => '6d72e772',
+ 'rsrc/css/aphront/multi-column.css' => '41a848c0',
'rsrc/css/aphront/notification.css' => '9c279160',
'rsrc/css/aphront/pager-view.css' => '2e3539af',
'rsrc/css/aphront/panel-view.css' => '5846dfa2',
@@ -94,7 +94,7 @@
'rsrc/css/application/ponder/feed.css' => 'e62615b6',
'rsrc/css/application/ponder/post.css' => 'ebab8a70',
'rsrc/css/application/ponder/vote.css' => '8ed6ed8b',
- 'rsrc/css/application/profile/profile-view.css' => '28f433ef',
+ 'rsrc/css/application/profile/profile-view.css' => 'fddedfa1',
'rsrc/css/application/projects/project-icon.css' => 'c2ecb7f1',
'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733',
'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5',
@@ -115,7 +115,7 @@
'rsrc/css/layout/phabricator-crumbs-view.css' => 'd5aa87e4',
'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82',
'rsrc/css/layout/phabricator-hovercard-view.css' => '893f4783',
- 'rsrc/css/layout/phabricator-side-menu-view.css' => '90eafc85',
+ 'rsrc/css/layout/phabricator-side-menu-view.css' => '7e8c6341',
'rsrc/css/layout/phabricator-source-code-view.css' => '7d346aa4',
'rsrc/css/phui/calendar/phui-calendar-day.css' => 'de035c8a',
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'c1d0ca59',
@@ -136,7 +136,7 @@
'rsrc/css/phui/phui-info-panel.css' => '27ea50a1',
'rsrc/css/phui/phui-list.css' => '53deb25c',
'rsrc/css/phui/phui-object-box.css' => 'dd19785f',
- 'rsrc/css/phui/phui-object-item-list-view.css' => '5b2ad99d',
+ 'rsrc/css/phui/phui-object-item-list-view.css' => '8279b873',
'rsrc/css/phui/phui-pinboard-view.css' => '3dd4a269',
'rsrc/css/phui/phui-property-list-view.css' => '51480060',
'rsrc/css/phui/phui-remarkup-preview.css' => '19ad512b',
@@ -145,7 +145,7 @@
'rsrc/css/phui/phui-tag-view.css' => '6b74282b',
'rsrc/css/phui/phui-text.css' => 'cf019f54',
'rsrc/css/phui/phui-timeline-view.css' => '415bf348',
- 'rsrc/css/phui/phui-workboard-view.css' => '2bf82d00',
+ 'rsrc/css/phui/phui-workboard-view.css' => '8896938c',
'rsrc/css/phui/phui-workpanel-view.css' => 'e495a5cc',
'rsrc/css/sprite-apps-large.css' => '20ec0cc0',
'rsrc/css/sprite-apps.css' => 'd5baed0f',
@@ -498,7 +498,7 @@
'aphront-dialog-view-css' => '4dbbe3bb',
'aphront-error-view-css' => '3462dbee',
'aphront-list-filter-view-css' => '2ae43867',
- 'aphront-multi-column-view-css' => '6d72e772',
+ 'aphront-multi-column-view-css' => '41a848c0',
'aphront-pager-view-css' => '2e3539af',
'aphront-panel-view-css' => '5846dfa2',
'aphront-table-view-css' => 'b22b7216',
@@ -728,11 +728,11 @@
'phabricator-object-selector-css' => '029a133d',
'phabricator-phtize' => 'd254d646',
'phabricator-prefab' => '72da38cc',
- 'phabricator-profile-css' => '28f433ef',
+ 'phabricator-profile-css' => 'fddedfa1',
'phabricator-remarkup-css' => '7604f12e',
'phabricator-search-results-css' => 'f240504c',
'phabricator-shaped-request' => '7cbe244b',
- 'phabricator-side-menu-view-css' => '90eafc85',
+ 'phabricator-side-menu-view-css' => '7e8c6341',
'phabricator-slowvote-css' => '266df6a1',
'phabricator-source-code-view-css' => '7d346aa4',
'phabricator-standard-page-view' => '2c96cfb5',
@@ -780,7 +780,7 @@
'phui-info-panel-css' => '27ea50a1',
'phui-list-view-css' => '53deb25c',
'phui-object-box-css' => 'dd19785f',
- 'phui-object-item-list-view-css' => '5b2ad99d',
+ 'phui-object-item-list-view-css' => '8279b873',
'phui-pinboard-view-css' => '3dd4a269',
'phui-property-list-view-css' => '51480060',
'phui-remarkup-preview-css' => '19ad512b',
@@ -789,7 +789,7 @@
'phui-tag-view-css' => '6b74282b',
'phui-text-css' => 'cf019f54',
'phui-timeline-view-css' => '415bf348',
- 'phui-workboard-view-css' => '2bf82d00',
+ 'phui-workboard-view-css' => '8896938c',
'phui-workpanel-view-css' => 'e495a5cc',
'phuix-action-list-view' => 'b5c256b8',
'phuix-action-view' => '6e8cefa4',
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
@@ -2199,6 +2199,7 @@
'PhabricatorProjectEditMainController' => 'applications/project/controller/PhabricatorProjectEditMainController.php',
'PhabricatorProjectEditPictureController' => 'applications/project/controller/PhabricatorProjectEditPictureController.php',
'PhabricatorProjectEditorTestCase' => 'applications/project/editor/__tests__/PhabricatorProjectEditorTestCase.php',
+ 'PhabricatorProjectFeedController' => 'applications/project/controller/PhabricatorProjectFeedController.php',
'PhabricatorProjectIcon' => 'applications/project/icon/PhabricatorProjectIcon.php',
'PhabricatorProjectInterface' => 'applications/project/interface/PhabricatorProjectInterface.php',
'PhabricatorProjectListController' => 'applications/project/controller/PhabricatorProjectListController.php',
@@ -2225,6 +2226,7 @@
'PhabricatorProjectTransactionQuery' => 'applications/project/query/PhabricatorProjectTransactionQuery.php',
'PhabricatorProjectUIEventListener' => 'applications/project/events/PhabricatorProjectUIEventListener.php',
'PhabricatorProjectUpdateController' => 'applications/project/controller/PhabricatorProjectUpdateController.php',
+ 'PhabricatorProjectViewController' => 'applications/project/controller/PhabricatorProjectViewController.php',
'PhabricatorProjectWatchController' => 'applications/project/controller/PhabricatorProjectWatchController.php',
'PhabricatorProjectWikiExplainController' => 'applications/project/controller/PhabricatorProjectWikiExplainController.php',
'PhabricatorProjectsPolicyRule' => 'applications/policy/rule/PhabricatorProjectsPolicyRule.php',
@@ -5418,6 +5420,7 @@
'PhabricatorProjectEditMainController' => 'PhabricatorProjectController',
'PhabricatorProjectEditPictureController' => 'PhabricatorProjectController',
'PhabricatorProjectEditorTestCase' => 'PhabricatorTestCase',
+ 'PhabricatorProjectFeedController' => 'PhabricatorProjectController',
'PhabricatorProjectIcon' => 'Phobject',
'PhabricatorProjectListController' => 'PhabricatorProjectController',
'PhabricatorProjectMemberOfProjectEdgeType' => 'PhabricatorEdgeType',
@@ -5445,6 +5448,7 @@
'PhabricatorProjectTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorProjectUIEventListener' => 'PhabricatorEventListener',
'PhabricatorProjectUpdateController' => 'PhabricatorProjectController',
+ 'PhabricatorProjectViewController' => 'PhabricatorProjectController',
'PhabricatorProjectWatchController' => 'PhabricatorProjectController',
'PhabricatorProjectWikiExplainController' => 'PhabricatorProjectController',
'PhabricatorProjectsPolicyRule' => 'PhabricatorPolicyRule',
diff --git a/src/applications/project/application/PhabricatorProjectApplication.php b/src/applications/project/application/PhabricatorProjectApplication.php
--- a/src/applications/project/application/PhabricatorProjectApplication.php
+++ b/src/applications/project/application/PhabricatorProjectApplication.php
@@ -52,8 +52,12 @@
=> 'PhabricatorProjectMembersEditController',
'members/(?P<id>[1-9]\d*)/remove/'
=> 'PhabricatorProjectMembersRemoveController',
- 'view/(?P<id>[1-9]\d*)/'
+ 'profile/(?P<id>[1-9]\d*)/'
=> 'PhabricatorProjectProfileController',
+ 'feed/(?P<id>[1-9]\d*)/'
+ => 'PhabricatorProjectFeedController',
+ 'view/(?P<id>[1-9]\d*)/'
+ => 'PhabricatorProjectViewController',
'picture/(?P<id>[1-9]\d*)/'
=> 'PhabricatorProjectEditPictureController',
'icon/(?P<id>[1-9]\d*)/'
@@ -86,7 +90,7 @@
'wiki/' => 'PhabricatorProjectWikiExplainController',
),
'/tag/' => array(
- '(?P<slug>[^/]+)/' => 'PhabricatorProjectProfileController',
+ '(?P<slug>[^/]+)/' => 'PhabricatorProjectViewController',
'(?P<slug>[^/]+)/board/' => 'PhabricatorProjectBoardViewController',
),
);
diff --git a/src/applications/project/controller/PhabricatorProjectBoardController.php b/src/applications/project/controller/PhabricatorProjectBoardController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardController.php
@@ -13,12 +13,10 @@
return $this->project;
}
- protected function buildApplicationCrumbs() {
- $project = $this->getProject();
- $crumbs = parent::buildApplicationCrumbs();
- $crumbs->addTextCrumb(
- $project->getName(),
- $this->getApplicationURI('view/'.$project->getID().'/'));
- return $crumbs;
+ public function buildIconNavView(PhabricatorProject $project) {
+ $id = $project->getID();
+ $nav = parent::buildIconNavView($project);
+ $nav->selectFilter("board/{$id}/");
+ return $nav;
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
@@ -15,16 +15,9 @@
return true;
}
- public function willProcessRequest(array $data) {
- $this->id = idx($data, 'id');
- $this->slug = idx($data, 'slug');
- $this->queryKey = idx($data, 'queryKey');
- $this->filter = (bool)idx($data, 'filter');
- }
-
- public function processRequest() {
- $request = $this->getRequest();
+ public function handleRequest(AphrontRequest $request) {
$viewer = $request->getUser();
+ $id = $request->getURIData('id');
$show_hidden = $request->getBool('hidden');
$this->showHidden = $show_hidden;
@@ -32,10 +25,12 @@
$project = id(new PhabricatorProjectQuery())
->setViewer($viewer)
->needImages(true);
- if ($this->slug) {
- $project->withSlugs(array($this->slug));
+ $id = $request->getURIData('id');
+ $slug = $request->getURIData('slug');
+ if ($slug) {
+ $project->withSlugs(array($slug));
} else {
- $project->withIDs(array($this->id));
+ $project->withIDs(array($id));
}
$project = $project->executeOne();
if (!$project) {
@@ -111,7 +106,7 @@
$engine->getQueryResultsPageURI($saved->getQueryKey())));
}
- $query_key = $this->queryKey;
+ $query_key = $request->getURIData('queryKey');
if (!$query_key) {
$query_key = 'open';
}
@@ -133,7 +128,7 @@
$custom_query = $saved;
}
- if ($this->filter) {
+ if ($request->getURIData('filter')) {
$filter_form = id(new AphrontFormView())
->setUser($viewer);
$engine->buildSearchForm($filter_form, $saved);
@@ -303,7 +298,7 @@
$header_link = phutil_tag(
'a',
array(
- 'href' => $this->getApplicationURI('view/'.$project->getID().'/'),
+ 'href' => $this->getApplicationURI('profile/'.$project->getID().'/'),
),
$project->getName());
@@ -312,7 +307,7 @@
->setUser($viewer)
->setNoBackground(true)
->setImage($project->getProfileImageURI())
- ->setImageURL($this->getApplicationURI('view/'.$project->getID().'/'))
+ ->setImageURL($this->getApplicationURI('profile/'.$project->getID().'/'))
->addActionLink($sort_menu)
->addActionLink($filter_menu)
->addActionLink($manage_menu)
@@ -322,10 +317,13 @@
->appendChild($board)
->addClass('project-board-wrapper');
+ $nav = $this->buildIconNavView($project);
+ $nav->appendChild($header);
+ $nav->appendChild($board_box);
+
return $this->buildApplicationPage(
array(
- $header,
- $board_box,
+ $nav,
),
array(
'title' => pht('%s Board', $project->getName()),
diff --git a/src/applications/project/controller/PhabricatorProjectColumnDetailController.php b/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
--- a/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
+++ b/src/applications/project/controller/PhabricatorProjectColumnDetailController.php
@@ -22,6 +22,7 @@
PhabricatorPolicyCapability::CAN_VIEW,
))
->withIDs(array($this->projectID))
+ ->needImages(true)
->executeOne();
if (!$project) {
@@ -47,11 +48,6 @@
$timeline->setShouldTerminate(true);
$title = pht('%s', $column->getDisplayName());
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(
- pht('Board'),
- $this->getApplicationURI('board/'.$project->getID().'/'));
- $crumbs->addTextCrumb($title);
$header = $this->buildHeaderView($column);
$actions = $this->buildActionView($column);
@@ -61,11 +57,13 @@
->setHeader($header)
->addPropertyList($properties);
+ $nav = $this->buildIconNavView($project);
+ $nav->appendChild($box);
+ $nav->appendChild($timeline);
+
return $this->buildApplicationPage(
array(
- $crumbs,
- $box,
- $timeline,
+ $nav,
),
array(
'title' => $title,
diff --git a/src/applications/project/controller/PhabricatorProjectColumnEditController.php b/src/applications/project/controller/PhabricatorProjectColumnEditController.php
--- a/src/applications/project/controller/PhabricatorProjectColumnEditController.php
+++ b/src/applications/project/controller/PhabricatorProjectColumnEditController.php
@@ -23,6 +23,7 @@
PhabricatorPolicyCapability::CAN_EDIT,
))
->withIDs(array($this->projectID))
+ ->needImages(true)
->executeOne();
if (!$project) {
@@ -135,11 +136,9 @@
if ($is_new) {
$title = pht('Create Column');
$submit = pht('Create Column');
- $crumb_text = pht('Create Column');
} else {
$title = pht('Edit %s', $column->getDisplayName());
$submit = pht('Save Column');
- $crumb_text = pht('Edit');
}
$form->appendChild(
@@ -147,28 +146,17 @@
->setValue($submit)
->addCancelButton($view_uri));
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(
- pht('Board'),
- $this->getApplicationURI('board/'.$project->getID().'/'));
-
- if (!$is_new) {
- $crumbs->addTextCrumb(
- $column->getDisplayName(),
- $view_uri);
- }
-
- $crumbs->addTextCrumb($crumb_text);
-
$form_box = id(new PHUIObjectBoxView())
->setHeaderText($title)
->setValidationException($validation_exception)
->setForm($form);
+ $nav = $this->buildIconNavView($project);
+ $nav->appendChild($form_box);
+
return $this->buildApplicationPage(
array(
- $crumbs,
- $form_box,
+ $nav,
),
array(
'title' => $title,
diff --git a/src/applications/project/controller/PhabricatorProjectController.php b/src/applications/project/controller/PhabricatorProjectController.php
--- a/src/applications/project/controller/PhabricatorProjectController.php
+++ b/src/applications/project/controller/PhabricatorProjectController.php
@@ -2,23 +2,56 @@
abstract class PhabricatorProjectController extends PhabricatorController {
+ public function buildApplicationMenu() {
+ return $this->buildSideNavView(true)->getMenu();
+ }
+
public function buildSideNavView($for_app = false) {
$user = $this->getRequest()->getUser();
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
+ $id = null;
if ($for_app) {
+ $user = $this->getRequest()->getUser();
+ $id = $this->getRequest()->getURIData('id');
+ if ($id) {
+ $nav->addFilter("profile/{$id}/", pht('Profile'));
+ $nav->addFilter("board/{$id}/", pht('Workboard'));
+ $nav->addFilter("members/{$id}/", pht('Members'));
+ $nav->addFilter("feed/{$id}/", pht('Feed'));
+ $nav->addFilter("edit/{$id}/", pht('Edit'));
+ }
$nav->addFilter('create', pht('Create Project'));
}
- id(new PhabricatorProjectSearchEngine())
- ->setViewer($user)
- ->addNavigationItems($nav->getMenu());
+ if (!$id) {
+ id(new PhabricatorProjectSearchEngine())
+ ->setViewer($user)
+ ->addNavigationItems($nav->getMenu());
+ }
$nav->selectFilter(null);
return $nav;
}
+ public function buildIconNavView(PhabricatorProject $project) {
+ $id = $project->getID();
+ $picture = $project->getProfileImageURI();
+ $name = $project->getName();
+
+ $nav = new AphrontSideNavFilterView();
+ $nav->setIconNav(true);
+ $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
+ $nav->addIcon("profile/{$id}/", $name, null, $picture);
+ $nav->addIcon("board/{$id}/", pht('Workboard'), 'fa-columns');
+ $nav->addIcon("feed/{$id}/", pht('Feed'), 'fa-newspaper-o');
+ $nav->addIcon("members/{$id}/", pht('Members'), 'fa-group');
+ $nav->addIcon("edit/{$id}/", pht('Edit'), 'fa-pencil');
+
+ return $nav;
+ }
+
}
diff --git a/src/applications/project/controller/PhabricatorProjectEditDetailsController.php b/src/applications/project/controller/PhabricatorProjectEditDetailsController.php
--- a/src/applications/project/controller/PhabricatorProjectEditDetailsController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditDetailsController.php
@@ -14,12 +14,14 @@
$viewer = $request->getUser();
if ($this->id) {
- $is_new = false;
+ $id = $request->getURIData('id');
+ $is_new = false;
$project = id(new PhabricatorProjectQuery())
->setViewer($viewer)
->withIDs(array($this->id))
->needSlugs(true)
+ ->needImages(true)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
@@ -149,7 +151,7 @@
if ($is_new) {
$redirect_uri =
- $this->getApplicationURI('view/'.$project->getID().'/');
+ $this->getApplicationURI('profile/'.$project->getID().'/');
} else {
$redirect_uri =
$this->getApplicationURI('edit/'.$project->getID().'/');
@@ -300,22 +302,17 @@
->setValidationException($validation_exception)
->setForm($form);
- $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView());
- if ($is_new) {
- $crumbs->addTextCrumb($title);
+ if (!$is_new) {
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("edit/{$id}/");
+ $nav->appendChild($form_box);
} else {
- $crumbs
- ->addTextCrumb($project->getName(),
- $this->getApplicationURI('view/'.$project->getID().'/'))
- ->addTextCrumb(pht('Edit'),
- $this->getApplicationURI('edit/'.$project->getID().'/'))
- ->addTextCrumb(pht('Details'));
+ $nav = array($form_box);
}
return $this->buildApplicationPage(
array(
- $crumbs,
- $form_box,
+ $nav,
),
array(
'title' => $title,
diff --git a/src/applications/project/controller/PhabricatorProjectEditMainController.php b/src/applications/project/controller/PhabricatorProjectEditMainController.php
--- a/src/applications/project/controller/PhabricatorProjectEditMainController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditMainController.php
@@ -18,6 +18,7 @@
public function processRequest() {
$request = $this->getRequest();
$viewer = $request->getUser();
+ $id = $request->getURIData('id');
$project = id(new PhabricatorProjectQuery())
->setViewer($viewer)
@@ -43,12 +44,6 @@
$actions = $this->buildActionListView($project);
$properties = $this->buildPropertyListView($project, $actions);
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(
- $project->getName(),
- $this->getApplicationURI('view/'.$project->getID().'/'));
- $crumbs->addTextCrumb(pht('Edit'));
-
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->addPropertyList($properties);
@@ -58,11 +53,16 @@
new PhabricatorProjectTransactionQuery());
$timeline->setShouldTerminate(true);
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("edit/{$id}/");
+ $nav->appendChild($object_box);
+ $nav->appendChild($timeline);
+
+ $mnav = $this->buildSideNavView();
+
return $this->buildApplicationPage(
array(
- $crumbs,
- $object_box,
- $timeline,
+ $nav,
),
array(
'title' => $project->getName(),
diff --git a/src/applications/project/controller/PhabricatorProjectEditPictureController.php b/src/applications/project/controller/PhabricatorProjectEditPictureController.php
--- a/src/applications/project/controller/PhabricatorProjectEditPictureController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditPictureController.php
@@ -12,10 +12,12 @@
public function processRequest() {
$request = $this->getRequest();
$viewer = $request->getUser();
+ $id = $request->getURIData('id');
$project = id(new PhabricatorProjectQuery())
->setViewer($viewer)
->withIDs(array($this->id))
+ ->needImages(true)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
@@ -27,7 +29,7 @@
}
$edit_uri = $this->getApplicationURI('edit/'.$project->getID().'/');
- $view_uri = $this->getApplicationURI('view/'.$project->getID().'/');
+ $view_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
$supported_formats = PhabricatorFile::getTransformableImageFormats();
$e_file = true;
@@ -100,10 +102,6 @@
}
$title = pht('Edit Project Picture');
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb($project->getName(), $view_uri);
- $crumbs->addTextCrumb(pht('Edit'), $edit_uri);
- $crumbs->addTextCrumb(pht('Picture'));
$form = id(new PHUIFormLayoutView())
->setUser($viewer);
@@ -292,11 +290,14 @@
->setHeaderText(pht('Upload New Picture'))
->setForm($upload_form);
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("edit/{$id}/");
+ $nav->appendChild($form_box);
+ $nav->appendChild($upload_box);
+
return $this->buildApplicationPage(
array(
- $crumbs,
- $form_box,
- $upload_box,
+ $nav,
),
array(
'title' => $title,
diff --git a/src/applications/project/controller/PhabricatorProjectFeedController.php b/src/applications/project/controller/PhabricatorProjectFeedController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/project/controller/PhabricatorProjectFeedController.php
@@ -0,0 +1,91 @@
+<?php
+
+final class PhabricatorProjectFeedController
+ extends PhabricatorProjectController {
+
+ public function shouldAllowPublic() {
+ return true;
+ }
+
+ public function handleRequest(AphrontRequest $request) {
+ $user = $request->getUser();
+
+ $query = id(new PhabricatorProjectQuery())
+ ->setViewer($user)
+ ->needMembers(true)
+ ->needWatchers(true)
+ ->needImages(true)
+ ->needSlugs(true);
+ $id = $request->getURIData('id');
+ $slug = $request->getURIData('slug');
+ if ($slug) {
+ $query->withSlugs(array($slug));
+ } else {
+ $query->withIDs(array($id));
+ }
+ $project = $query->executeOne();
+ if (!$project) {
+ return new Aphront404Response();
+ }
+ if ($slug && $slug != $project->getPrimarySlug()) {
+ return id(new AphrontRedirectResponse())
+ ->setURI('/tag/'.$project->getPrimarySlug().'/');
+ }
+
+ require_celerity_resource('phabricator-profile-css');
+
+ $query = new PhabricatorFeedQuery();
+ $query->setFilterPHIDs(
+ array(
+ $project->getPHID(),
+ ));
+ $query->setLimit(50);
+ $query->setViewer($request->getUser());
+ $stories = $query->execute();
+ $feed = $this->renderStories($stories);
+
+ $content = phutil_tag_div('phabricator-project-feed', $feed);
+
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("feed/{$id}/");
+ $nav->appendChild($content);
+
+ return $this->buildApplicationPage(
+ array(
+ $nav,
+ ),
+ array(
+ 'title' => $project->getName(),
+ ));
+ }
+
+ private function renderFeedPage(PhabricatorProject $project) {
+
+ $query = new PhabricatorFeedQuery();
+ $query->setFilterPHIDs(array($project->getPHID()));
+ $query->setViewer($this->getRequest()->getUser());
+ $query->setLimit(100);
+ $stories = $query->execute();
+
+ if (!$stories) {
+ return pht('There are no stories about this project.');
+ }
+
+ return $this->renderStories($stories);
+ }
+
+ private function renderStories(array $stories) {
+ assert_instances_of($stories, 'PhabricatorFeedStory');
+
+ $builder = new PhabricatorFeedBuilder($stories);
+ $builder->setUser($this->getRequest()->getUser());
+ $builder->setShowHovercards(true);
+ $view = $builder->buildView();
+
+ return phutil_tag_div(
+ 'profile-feed',
+ $view->render());
+ }
+
+
+}
diff --git a/src/applications/project/controller/PhabricatorProjectListController.php b/src/applications/project/controller/PhabricatorProjectListController.php
--- a/src/applications/project/controller/PhabricatorProjectListController.php
+++ b/src/applications/project/controller/PhabricatorProjectListController.php
@@ -22,7 +22,7 @@
return $this->delegateToController($controller);
}
- protected function buildApplicationMenu() {
+ public function buildApplicationMenu() {
return $this->buildSideNavView(true)->getMenu();
}
diff --git a/src/applications/project/controller/PhabricatorProjectMembersEditController.php b/src/applications/project/controller/PhabricatorProjectMembersEditController.php
--- a/src/applications/project/controller/PhabricatorProjectMembersEditController.php
+++ b/src/applications/project/controller/PhabricatorProjectMembersEditController.php
@@ -12,15 +12,16 @@
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
+ $id = $request->getURIData('id');
$project = id(new PhabricatorProjectQuery())
->setViewer($user)
->withIDs(array($this->id))
->needMembers(true)
+ ->needImages(true)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
- PhabricatorPolicyCapability::CAN_EDIT,
))
->executeOne();
if (!$project) {
@@ -73,39 +74,44 @@
);
}
- $header_name = pht('Edit Members');
- $title = pht('Edit Members');
-
- $form = new AphrontFormView();
- $form
- ->setUser($user)
- ->appendChild(
- id(new AphrontFormTokenizerControl())
- ->setName('phids')
- ->setLabel(pht('Add Members'))
- ->setDatasource(new PhabricatorPeopleDatasource()))
- ->appendChild(
- id(new AphrontFormSubmitControl())
- ->addCancelButton('/project/view/'.$project->getID().'/')
- ->setValue(pht('Add Members')));
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $user,
+ $project,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $form_box = null;
+ $title = pht('Add Members');
+ if ($can_edit) {
+ $header_name = pht('Edit Members');
+ $view_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
+
+ $form = new AphrontFormView();
+ $form
+ ->setUser($user)
+ ->appendChild(
+ id(new AphrontFormTokenizerControl())
+ ->setName('phids')
+ ->setLabel(pht('Add Members'))
+ ->setDatasource(new PhabricatorPeopleDatasource()))
+ ->appendChild(
+ id(new AphrontFormSubmitControl())
+ ->addCancelButton($view_uri)
+ ->setValue(pht('Add Members')));
+ $form_box = id(new PHUIObjectBoxView())
+ ->setHeaderText($title)
+ ->setForm($form);
+ }
$member_list = $this->renderMemberList($project, $handles);
- $form_box = id(new PHUIObjectBoxView())
- ->setHeaderText($title)
- ->setForm($form);
-
- $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView())
- ->addTextCrumb(
- $project->getName(),
- '/project/view/'.$project->getID().'/')
- ->addTextCrumb(pht('Edit Members'), $this->getApplicationURI());
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("members/{$id}/");
+ $nav->appendChild($form_box);
+ $nav->appendChild($member_list);
return $this->buildApplicationPage(
array(
- $crumbs,
- $form_box,
- $member_list,
+ $nav,
),
array(
'title' => $title,
@@ -119,8 +125,14 @@
$request = $this->getRequest();
$viewer = $request->getUser();
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $project,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
$list = id(new PHUIObjectItemListView())
- ->setNoDataString(pht('This project does not have any members.'));
+ ->setNoDataString(pht('This project does not have any members.'))
+ ->setStackable(true);
foreach ($handles as $handle) {
$remove_uri = $this->getApplicationURI(
@@ -131,16 +143,22 @@
->setHref($handle->getURI())
->setImageURI($handle->getImageURI());
- $item->addAction(
- id(new PHUIListItemView())
- ->setIcon('fa-times')
- ->setName(pht('Remove'))
- ->setHref($remove_uri)
- ->setWorkflow(true));
+ if ($can_edit) {
+ $item->addAction(
+ id(new PHUIListItemView())
+ ->setIcon('fa-times')
+ ->setName(pht('Remove'))
+ ->setHref($remove_uri)
+ ->setWorkflow(true));
+ }
$list->addItem($item);
}
- return $list;
+ $box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Members'))
+ ->appendChild($list);
+
+ return $box;
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectProfileController.php b/src/applications/project/controller/PhabricatorProjectProfileController.php
--- a/src/applications/project/controller/PhabricatorProjectProfileController.php
+++ b/src/applications/project/controller/PhabricatorProjectProfileController.php
@@ -3,22 +3,11 @@
final class PhabricatorProjectProfileController
extends PhabricatorProjectController {
- private $id;
- private $slug;
-
public function shouldAllowPublic() {
return true;
}
- public function willProcessRequest(array $data) {
- // via /project/view/$id/
- $this->id = idx($data, 'id');
- // via /tag/$slug/
- $this->slug = idx($data, 'slug');
- }
-
- public function processRequest() {
- $request = $this->getRequest();
+ public function handleRequest(AphrontRequest $request) {
$user = $request->getUser();
$query = id(new PhabricatorProjectQuery())
@@ -27,55 +16,43 @@
->needWatchers(true)
->needImages(true)
->needSlugs(true);
- if ($this->slug) {
- $query->withSlugs(array($this->slug));
+ $id = $request->getURIData('id');
+ $slug = $request->getURIData('slug');
+ if ($slug) {
+ $query->withSlugs(array($slug));
} else {
- $query->withIDs(array($this->id));
+ $query->withIDs(array($id));
}
$project = $query->executeOne();
if (!$project) {
return new Aphront404Response();
}
- if ($this->slug && $this->slug != $project->getPrimarySlug()) {
+ if ($slug && $slug != $project->getPrimarySlug()) {
return id(new AphrontRedirectResponse())
->setURI('/tag/'.$project->getPrimarySlug().'/');
}
$picture = $project->getProfileImageURI();
-
require_celerity_resource('phabricator-profile-css');
-
$tasks = $this->renderTasksPage($project);
+ $content = phutil_tag_div('phabricator-project-layout', $tasks);
- $query = new PhabricatorFeedQuery();
- $query->setFilterPHIDs(
- array(
- $project->getPHID(),
- ));
- $query->setLimit(50);
- $query->setViewer($this->getRequest()->getUser());
- $stories = $query->execute();
- $feed = $this->renderStories($stories);
-
- $content = phutil_tag_div(
- 'phabricator-project-layout',
- array($tasks, $feed));
-
- $id = $project->getID();
- $icon = id(new PHUIIconView())
- ->setIconFont('fa-columns');
- $board_btn = id(new PHUIButtonView())
- ->setTag('a')
- ->setText(pht('Workboard'))
- ->setHref($this->getApplicationURI("board/{$id}/"))
- ->setIcon($icon);
+ $phid = $project->getPHID();
+ $create_uri = '/maniphest/task/create/?projects='.$phid;
+ $icon_new = id(new PHUIIconView())
+ ->setIconFont('fa-plus');
+ $button_add = id(new PHUIButtonView())
+ ->setTag('a')
+ ->setText(pht('New Task'))
+ ->setHref($create_uri)
+ ->setIcon($icon_new);
$header = id(new PHUIHeaderView())
->setHeader($project->getName())
->setUser($user)
->setPolicyObject($project)
->setImage($picture)
- ->addActionLink($board_btn);
+ ->addActionLink($button_add);
if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) {
$header->setStatus('fa-check', 'bluegrey', pht('Active'));
@@ -86,57 +63,28 @@
$actions = $this->buildActionListView($project);
$properties = $this->buildPropertyListView($project, $actions);
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb($project->getName());
-
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->addPropertyList($properties);
+ $nav = $this->buildIconNavView($project);
+ $nav->selectFilter("profile/{$id}/");
+ $nav->appendChild($object_box);
+ $nav->appendChild($content);
+
return $this->buildApplicationPage(
array(
- $crumbs,
- $object_box,
- $content,
+ $nav,
),
array(
'title' => $project->getName(),
));
}
- private function renderFeedPage(PhabricatorProject $project) {
-
- $query = new PhabricatorFeedQuery();
- $query->setFilterPHIDs(array($project->getPHID()));
- $query->setViewer($this->getRequest()->getUser());
- $query->setLimit(100);
- $stories = $query->execute();
-
- if (!$stories) {
- return pht('There are no stories about this project.');
- }
-
- return $this->renderStories($stories);
- }
-
- private function renderStories(array $stories) {
- assert_instances_of($stories, 'PhabricatorFeedStory');
-
- $builder = new PhabricatorFeedBuilder($stories);
- $builder->setUser($this->getRequest()->getUser());
- $builder->setShowHovercards(true);
- $view = $builder->buildView();
-
- return phutil_tag_div(
- 'profile-feed',
- $view->render());
- }
-
-
private function renderTasksPage(PhabricatorProject $project) {
$user = $this->getRequest()->getUser();
- $limit = 10;
+ $limit = 50;
$query = id(new ManiphestTaskQuery())
->setViewer($user)
@@ -168,24 +116,15 @@
'/maniphest/?statuses=%s&allProjects=%s#R',
implode(',', ManiphestTaskStatus::getOpenStatusConstants()),
$phid);
- $create_uri = '/maniphest/task/create/?projects='.$phid;
$icon = id(new PHUIIconView())
- ->setIconFont('fa-list');
+ ->setIconFont('fa-search');
$button_view = id(new PHUIButtonView())
->setTag('a')
- ->setText(pht('View All'))
+ ->setText(pht('View Query'))
->setHref($view_uri)
->setIcon($icon);
- $icon_new = id(new PHUIIconView())
- ->setIconFont('fa-plus');
- $button_add = id(new PHUIButtonView())
- ->setTag('a')
- ->setText(pht('New Task'))
- ->setHref($create_uri)
- ->setIcon($icon_new);
$header = id(new PHUIHeaderView())
- ->addActionLink($button_add)
->addActionLink($button_view);
if ($count > $limit) {
@@ -217,20 +156,6 @@
$project,
PhabricatorPolicyCapability::CAN_EDIT);
- $view->addAction(
- id(new PhabricatorActionView())
- ->setName(pht('Edit Project'))
- ->setIcon('fa-pencil')
- ->setHref($this->getApplicationURI("edit/{$id}/")));
-
- $view->addAction(
- id(new PhabricatorActionView())
- ->setName(pht('Edit Members'))
- ->setIcon('fa-users')
- ->setHref($this->getApplicationURI("members/{$id}/"))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit));
-
$action = null;
if (!$project->isUserMember($viewer->getPHID())) {
$can_join = PhabricatorPolicyFilter::hasCapability(
diff --git a/src/applications/project/controller/PhabricatorProjectUpdateController.php b/src/applications/project/controller/PhabricatorProjectUpdateController.php
--- a/src/applications/project/controller/PhabricatorProjectUpdateController.php
+++ b/src/applications/project/controller/PhabricatorProjectUpdateController.php
@@ -42,7 +42,7 @@
return new Aphront404Response();
}
- $project_uri = '/project/view/'.$project->getID().'/';
+ $project_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
if ($process_action) {
diff --git a/src/applications/project/controller/PhabricatorProjectViewController.php b/src/applications/project/controller/PhabricatorProjectViewController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/project/controller/PhabricatorProjectViewController.php
@@ -0,0 +1,56 @@
+<?php
+
+final class PhabricatorProjectViewController
+ extends PhabricatorProjectController {
+
+ public function shouldAllowPublic() {
+ return true;
+ }
+
+ public function handleRequest(AphrontRequest $request) {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $query = id(new PhabricatorProjectQuery())
+ ->setViewer($user)
+ ->needMembers(true)
+ ->needWatchers(true)
+ ->needImages(true)
+ ->needSlugs(true);
+ $id = $request->getURIData('id');
+ $slug = $request->getURIData('slug');
+ if ($slug) {
+ $query->withSlugs(array($slug));
+ } else {
+ $query->withIDs(array($id));
+ }
+ $project = $query->executeOne();
+ if (!$project) {
+ return new Aphront404Response();
+ }
+
+
+ $columns = id(new PhabricatorProjectColumnQuery())
+ ->setViewer($user)
+ ->withProjectPHIDs(array($project->getPHID()))
+ ->execute();
+ if ($columns) {
+ $controller = 'board';
+ } else {
+ $controller = 'profile';
+ }
+
+ switch ($controller) {
+ case 'board':
+ $controller_object = new PhabricatorProjectBoardViewController();
+ break;
+ case 'profile':
+ default:
+ $controller_object = new PhabricatorProjectProfileController();
+ break;
+ }
+
+ return $this->delegateToController($controller_object);
+ }
+
+}
diff --git a/src/applications/project/controller/PhabricatorProjectWatchController.php b/src/applications/project/controller/PhabricatorProjectWatchController.php
--- a/src/applications/project/controller/PhabricatorProjectWatchController.php
+++ b/src/applications/project/controller/PhabricatorProjectWatchController.php
@@ -25,7 +25,7 @@
return new Aphront404Response();
}
- $project_uri = '/project/view/'.$project->getID().'/';
+ $project_uri = $this->getApplicationURI('profile/'.$project->getID().'/');
// You must be a member of a project to
if (!$project->isUserMember($viewer->getPHID())) {
diff --git a/src/applications/project/query/PhabricatorProjectSearchEngine.php b/src/applications/project/query/PhabricatorProjectSearchEngine.php
--- a/src/applications/project/query/PhabricatorProjectSearchEngine.php
+++ b/src/applications/project/query/PhabricatorProjectSearchEngine.php
@@ -219,8 +219,15 @@
foreach ($projects as $key => $project) {
$id = $project->getID();
+ $profile_uri = $this->getApplicationURI("profile/{$id}/");
$workboards_uri = $this->getApplicationURI("board/{$id}/");
$members_uri = $this->getApplicationURI("members/{$id}/");
+ $profile_url = phutil_tag(
+ 'a',
+ array(
+ 'href' => $profile_uri,
+ ),
+ pht('Profile'));
$workboards_url = phutil_tag(
'a',
array(
@@ -252,6 +259,7 @@
->setHref($this->getApplicationURI("view/{$id}/"))
->setImageURI($project->getProfileImageURI())
->addAttribute($tag_list)
+ ->addAttribute($profile_url)
->addAttribute($workboards_url)
->addAttribute($members_url);
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
@@ -27,6 +27,7 @@
private $crumbs;
private $classes = array();
private $menuID;
+ private $iconNav;
public function setMenuID($menu_id) {
$this->menuID = $menu_id;
@@ -61,6 +62,11 @@
return $this->crumbs;
}
+ public function setIconNav($nav) {
+ $this->iconNav = $nav;
+ return $this;
+ }
+
public function setActive($active) {
$this->active = $active;
return $this;
@@ -94,6 +100,22 @@
$key, $name, $uri, PHUIListItemView::TYPE_LINK);
}
+ public function addIcon($key, $name, $icon, $image = null) {
+ $href = clone $this->baseURI;
+ $href->setPath(rtrim($href->getPath().$key, '/').'/');
+ $href = (string)$href;
+
+ $item = id(new PHUIListItemView())
+ ->setKey($key)
+ ->setRenderNameAsTooltip(true)
+ ->setType(PHUIListItemView::TYPE_ICON_NAV)
+ ->setIcon($icon)
+ ->setHref($href)
+ ->setName($name)
+ ->setProfileImage($image);
+ return $this->addMenuItem($item);
+ }
+
public function addButton($key, $name, $uri = null) {
return $this->addThing(
$key, $name, $uri, PHUIListItemView::TYPE_BUTTON);
@@ -109,6 +131,7 @@
->setName($name)
->setType($type);
+
if (strlen($key)) {
$item->setKey($key);
}
@@ -192,6 +215,9 @@
$nav_classes = array();
$nav_classes[] = 'phabricator-nav';
+ if ($this->iconNav) {
+ $nav_classes[] = 'phabricator-icon-nav';
+ }
$nav_id = null;
$drag_id = null;
diff --git a/src/view/phui/PHUIListItemView.php b/src/view/phui/PHUIListItemView.php
--- a/src/view/phui/PHUIListItemView.php
+++ b/src/view/phui/PHUIListItemView.php
@@ -9,6 +9,7 @@
const TYPE_CUSTOM = 'type-custom';
const TYPE_DIVIDER = 'type-divider';
const TYPE_ICON = 'type-icon';
+ const TYPE_ICON_NAV = 'type-icon-nav';
const STATUS_WARN = 'phui-list-item-warn';
const STATUS_FAIL = 'phui-list-item-fail';
@@ -26,6 +27,7 @@
private $statusColor;
private $order;
private $aural;
+ private $profileImage;
public function setAural($aural) {
$this->aural = $aural;
@@ -73,6 +75,11 @@
return $this;
}
+ public function setProfileImage($image) {
+ $this->profileImage = $image;
+ return $this;
+ }
+
public function getIcon() {
return $this->icon;
}
@@ -170,9 +177,11 @@
if ($this->name) {
if ($this->getRenderNameAsTooltip()) {
+ Javelin::initBehavior('phabricator-tooltips');
$sigil = 'has-tooltip';
$meta = array(
'tip' => $this->name,
+ 'align' => 'E',
);
} else {
$external = null;
@@ -224,6 +233,12 @@
->setIconFont($icon_name);
}
+ if ($this->profileImage) {
+ $icon = id(new PHUIIconView())
+ ->setHeadSize(PHUIIconView::HEAD_SMALL)
+ ->setImage($this->profileImage);
+ }
+
if ($this->appIcon) {
$icon = id(new PHUIIconView())
->addClass('phui-list-item-icon')
diff --git a/webroot/rsrc/css/aphront/multi-column.css b/webroot/rsrc/css/aphront/multi-column.css
--- a/webroot/rsrc/css/aphront/multi-column.css
+++ b/webroot/rsrc/css/aphront/multi-column.css
@@ -159,25 +159,25 @@
display: block;
width: auto;
}
- .device-desktop .aphront-multi-column-column-outer {
+ .device-desktop .dashboard-view .aphront-multi-column-column-outer {
display: block;
border: none;
}
- .device-desktop .aphront-multi-column-column.mlr {
+ .device-desktop .dashboard-view .aphront-multi-column-column.mlr {
margin: 0;
}
- .device-desktop .aphront-multi-column-fluid .aphront-multi-column-2-up
- .aphront-multi-column-column-outer.half {
+ .device-desktop .dashboard-view .aphront-multi-column-fluid
+ .aphront-multi-column-2-up .aphront-multi-column-column-outer.half {
width: auto;
margin: 0 0 16px;
}
- .device-desktop .aphront-multi-column-fluid .aphront-multi-column-2-up
- .aphront-multi-column-column-outer.thirds {
+ .device-desktop .dashboard-view .aphront-multi-column-fluid
+ .aphront-multi-column-2-up .aphront-multi-column-column-outer.thirds {
width: auto;
margin: 0 0 16px;
}
- .device-desktop .aphront-multi-column-fluid .aphront-multi-column-2-up
- .aphront-multi-column-column-outer.third {
+ .device-desktop .dashboard-view .aphront-multi-column-fluid
+ .aphront-multi-column-2-up .aphront-multi-column-column-outer.third {
width: auto;
margin: 0 0 16px;
}
diff --git a/webroot/rsrc/css/application/profile/profile-view.css b/webroot/rsrc/css/application/profile/profile-view.css
--- a/webroot/rsrc/css/application/profile/profile-view.css
+++ b/webroot/rsrc/css/application/profile/profile-view.css
@@ -51,3 +51,13 @@
.device-tablet .phabricator-project-layout .profile-feed {
padding: 16px;
}
+
+.phabricator-project-feed {
+ padding: 4px 0 12px 12px;
+ max-width: 640px;
+}
+
+.device-phone .phabricator-project-feed {
+ padding: 0 12px;
+ width: auto;
+}
diff --git a/webroot/rsrc/css/layout/phabricator-side-menu-view.css b/webroot/rsrc/css/layout/phabricator-side-menu-view.css
--- a/webroot/rsrc/css/layout/phabricator-side-menu-view.css
+++ b/webroot/rsrc/css/layout/phabricator-side-menu-view.css
@@ -43,3 +43,44 @@
text-decoration: none;
background-color: {$hovergrey};
}
+
+.device-desktop .phabricator-icon-nav .phabricator-nav-column-background,
+.device-desktop .phabricator-icon-nav .phabricator-nav-local {
+ width: 40px;
+}
+
+.device-desktop .phabricator-icon-nav .phabricator-nav-content {
+ margin-left: 41px;
+}
+
+.phabricator-icon-nav .phabricator-side-menu .phui-list-item-href {
+ height: 40px;
+ width: 40px;
+ padding: 0;
+}
+
+.phabricator-icon-nav .phabricator-side-menu .phui-list-item-icon {
+ font-size: 20px;
+ width: 40px;
+ line-height: 40px;
+ text-align: center;
+ vertical-align: bottom;
+}
+
+.phabricator-icon-nav .phabricator-side-menu .phui-list-item-selected {
+ border: none;
+}
+
+.phabricator-icon-nav .phabricator-side-menu .phui-list-item-selected
+ .phui-icon-view {
+ color: {$sky};
+}
+
+.phabricator-icon-nav .phui-icon-view.phuihead-small {
+ height: 24px;
+ width: 24px;
+ border: 1px solid #fff;
+ background-size: 24px;
+ display: inline-block;
+ margin: 7px;
+}
diff --git a/webroot/rsrc/css/phui/phui-object-item-list-view.css b/webroot/rsrc/css/phui/phui-object-item-list-view.css
--- a/webroot/rsrc/css/phui/phui-object-item-list-view.css
+++ b/webroot/rsrc/css/phui/phui-object-item-list-view.css
@@ -19,7 +19,7 @@
}
.phui-object-box .phui-object-item-list-view.phui-object-list-flush {
- padding: 8px 12px 4px 12px;
+ padding: 8px 8px 4px 8px;
background-color: #E5E8EE;
}
@@ -38,7 +38,7 @@
border-color: {$lightgreyborder};
margin: 5px 0;
overflow: hidden;
- border-left-width: 6px;
+ border-left-width: 4px;
background: #fff;
margin-bottom: 4px;
}
diff --git a/webroot/rsrc/css/phui/phui-workboard-view.css b/webroot/rsrc/css/phui/phui-workboard-view.css
--- a/webroot/rsrc/css/phui/phui-workboard-view.css
+++ b/webroot/rsrc/css/phui/phui-workboard-view.css
@@ -73,6 +73,15 @@
margin: 0 3px;
}
+.device-desktop .project-board-wrapper .phui-workboard-view-shadow {
+ left: 53px;
+}
+
+.device-desktop .phui-workboard-view .aphront-multi-column-fixed
+ .aphront-multi-column-inner {
+ margin-left: 0;
+}
+
.device-tablet .project-board-wrapper {
margin-left: 8px;
margin-right: 8px;

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 28, 5:13 AM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7223258
Default Alt Text
D11272.id.diff (48 KB)

Event Timeline