Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15443600
D11272.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
48 KB
Referenced Files
None
Subscribers
None
D11272.id.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D11272: Revamp Projects with new navigation
Attached
Detach File
Event Timeline
Log In to Comment