mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 00:42:41 +01:00
Rough initial cut of profile new profile menu
Summary: Ref T10054. I haven't done any of the big-picture layout stuff yet, but this should get look-and-feel somewhere in the ballpark of reasonablness, I think. Major missing stuff: - No "collapse" state or action yet. - Menu is not full-height (requires changes to the rendering pipeline). Test Plan: {F1060941} Reviewers: chad Reviewed By: chad Maniphest Tasks: T10054 Differential Revision: https://secure.phabricator.com/D15016
This commit is contained in:
parent
5d6dd7df7d
commit
468031d1fd
13 changed files with 142 additions and 26 deletions
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
return array(
|
return array(
|
||||||
'names' => array(
|
'names' => array(
|
||||||
'core.pkg.css' => 'f30d5cbd',
|
'core.pkg.css' => 'e9eca0fd',
|
||||||
'core.pkg.js' => '1f5f365a',
|
'core.pkg.js' => '1f5f365a',
|
||||||
'darkconsole.pkg.js' => 'e7393ebb',
|
'darkconsole.pkg.js' => 'e7393ebb',
|
||||||
'differential.pkg.css' => '2de124c9',
|
'differential.pkg.css' => '2de124c9',
|
||||||
|
@ -112,7 +112,7 @@ return array(
|
||||||
'rsrc/css/font/phui-font-icon-base.css' => 'ecbbb4c2',
|
'rsrc/css/font/phui-font-icon-base.css' => 'ecbbb4c2',
|
||||||
'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82',
|
'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82',
|
||||||
'rsrc/css/layout/phabricator-hovercard-view.css' => '1239cd52',
|
'rsrc/css/layout/phabricator-hovercard-view.css' => '1239cd52',
|
||||||
'rsrc/css/layout/phabricator-side-menu-view.css' => '91b7a42c',
|
'rsrc/css/layout/phabricator-side-menu-view.css' => '1ddcb82f',
|
||||||
'rsrc/css/layout/phabricator-source-code-view.css' => 'cbeef983',
|
'rsrc/css/layout/phabricator-source-code-view.css' => 'cbeef983',
|
||||||
'rsrc/css/phui/calendar/phui-calendar-day.css' => 'd1cf6f93',
|
'rsrc/css/phui/calendar/phui-calendar-day.css' => 'd1cf6f93',
|
||||||
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'c1c7f338',
|
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'c1c7f338',
|
||||||
|
@ -143,6 +143,7 @@ return array(
|
||||||
'rsrc/css/phui/phui-object-item-list-view.css' => '26c30d3f',
|
'rsrc/css/phui/phui-object-item-list-view.css' => '26c30d3f',
|
||||||
'rsrc/css/phui/phui-pager.css' => 'bea33d23',
|
'rsrc/css/phui/phui-pager.css' => 'bea33d23',
|
||||||
'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
|
'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
|
||||||
|
'rsrc/css/phui/phui-profile-menu.css' => '5a1644af',
|
||||||
'rsrc/css/phui/phui-property-list-view.css' => '27b2849e',
|
'rsrc/css/phui/phui-property-list-view.css' => '27b2849e',
|
||||||
'rsrc/css/phui/phui-remarkup-preview.css' => '1a8f2591',
|
'rsrc/css/phui/phui-remarkup-preview.css' => '1a8f2591',
|
||||||
'rsrc/css/phui/phui-spacing.css' => '042804d6',
|
'rsrc/css/phui/phui-spacing.css' => '042804d6',
|
||||||
|
@ -763,7 +764,7 @@ return array(
|
||||||
'phabricator-remarkup-css' => 'b748dc17',
|
'phabricator-remarkup-css' => 'b748dc17',
|
||||||
'phabricator-search-results-css' => '7dea472c',
|
'phabricator-search-results-css' => '7dea472c',
|
||||||
'phabricator-shaped-request' => '7cbe244b',
|
'phabricator-shaped-request' => '7cbe244b',
|
||||||
'phabricator-side-menu-view-css' => '91b7a42c',
|
'phabricator-side-menu-view-css' => '1ddcb82f',
|
||||||
'phabricator-slowvote-css' => 'da0afb1b',
|
'phabricator-slowvote-css' => 'da0afb1b',
|
||||||
'phabricator-source-code-view-css' => 'cbeef983',
|
'phabricator-source-code-view-css' => 'cbeef983',
|
||||||
'phabricator-standard-page-view' => '3c99cdf4',
|
'phabricator-standard-page-view' => '3c99cdf4',
|
||||||
|
@ -821,6 +822,7 @@ return array(
|
||||||
'phui-object-item-list-view-css' => '26c30d3f',
|
'phui-object-item-list-view-css' => '26c30d3f',
|
||||||
'phui-pager-css' => 'bea33d23',
|
'phui-pager-css' => 'bea33d23',
|
||||||
'phui-pinboard-view-css' => '2495140e',
|
'phui-pinboard-view-css' => '2495140e',
|
||||||
|
'phui-profile-menu-css' => '5a1644af',
|
||||||
'phui-property-list-view-css' => '27b2849e',
|
'phui-property-list-view-css' => '27b2849e',
|
||||||
'phui-remarkup-preview-css' => '1a8f2591',
|
'phui-remarkup-preview-css' => '1a8f2591',
|
||||||
'phui-spacing-css' => '042804d6',
|
'phui-spacing-css' => '042804d6',
|
||||||
|
@ -2136,6 +2138,7 @@ return array(
|
||||||
'phui-spacing-css',
|
'phui-spacing-css',
|
||||||
'phui-form-css',
|
'phui-form-css',
|
||||||
'phui-icon-view-css',
|
'phui-icon-view-css',
|
||||||
|
'phui-profile-menu-css',
|
||||||
'phabricator-application-launch-view-css',
|
'phabricator-application-launch-view-css',
|
||||||
'phabricator-action-list-view-css',
|
'phabricator-action-list-view-css',
|
||||||
'phui-property-list-view-css',
|
'phui-property-list-view-css',
|
||||||
|
|
|
@ -116,6 +116,7 @@ return array(
|
||||||
'phui-spacing-css',
|
'phui-spacing-css',
|
||||||
'phui-form-css',
|
'phui-form-css',
|
||||||
'phui-icon-view-css',
|
'phui-icon-view-css',
|
||||||
|
'phui-profile-menu-css',
|
||||||
|
|
||||||
'phabricator-application-launch-view-css',
|
'phabricator-application-launch-view-css',
|
||||||
'phabricator-action-list-view-css',
|
'phabricator-action-list-view-css',
|
||||||
|
|
|
@ -191,6 +191,12 @@ final class CelerityDefaultPostprocessor
|
||||||
// Background color for "dark" themes.
|
// Background color for "dark" themes.
|
||||||
'page.background.dark' => '#ebecee',
|
'page.background.dark' => '#ebecee',
|
||||||
|
|
||||||
|
'menu.profile.background' => '#525868',
|
||||||
|
'menu.profile.text' => '#c6c7cb',
|
||||||
|
'menu.profile.text.selected' => '#ffffff',
|
||||||
|
'menu.profile.icon' => '#ffffff',
|
||||||
|
'menu.profile.icon.disabled' => '#b9bcc2',
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,7 @@ final class PhabricatorProjectDetailsProfilePanel
|
||||||
|
|
||||||
$href = "/project/profile/{$id}/";
|
$href = "/project/profile/{$id}/";
|
||||||
|
|
||||||
$item = id(new PHUIListItemView())
|
$item = $this->newItem()
|
||||||
->setRenderNameAsTooltip(true)
|
|
||||||
->setType(PHUIListItemView::TYPE_ICON_NAV)
|
|
||||||
->setHref($href)
|
->setHref($href)
|
||||||
->setName($name)
|
->setName($name)
|
||||||
->setProfileImage($picture);
|
->setProfileImage($picture);
|
||||||
|
|
|
@ -46,9 +46,7 @@ final class PhabricatorProjectMembersProfilePanel
|
||||||
$icon = 'fa-group';
|
$icon = 'fa-group';
|
||||||
$href = "/project/members/{$id}/";
|
$href = "/project/members/{$id}/";
|
||||||
|
|
||||||
$item = id(new PHUIListItemView())
|
$item = $this->newItem()
|
||||||
->setRenderNameAsTooltip(true)
|
|
||||||
->setType(PHUIListItemView::TYPE_ICON_NAV)
|
|
||||||
->setHref($href)
|
->setHref($href)
|
||||||
->setName($name)
|
->setName($name)
|
||||||
->setIcon($icon);
|
->setIcon($icon);
|
||||||
|
|
|
@ -61,9 +61,7 @@ final class PhabricatorProjectWorkboardProfilePanel
|
||||||
$href = "/project/board/{$id}/";
|
$href = "/project/board/{$id}/";
|
||||||
$name = $this->getDisplayName($config);
|
$name = $this->getDisplayName($config);
|
||||||
|
|
||||||
$item = id(new PHUIListItemView())
|
$item = $this->newItem()
|
||||||
->setRenderNameAsTooltip(true)
|
|
||||||
->setType(PHUIListItemView::TYPE_ICON_NAV)
|
|
||||||
->setHref($href)
|
->setHref($href)
|
||||||
->setName($name)
|
->setName($name)
|
||||||
->setIcon($icon);
|
->setIcon($icon);
|
||||||
|
|
|
@ -131,7 +131,7 @@ final class PhabricatorProfilePanelEngine extends Phobject {
|
||||||
|
|
||||||
public function buildNavigation() {
|
public function buildNavigation() {
|
||||||
$nav = id(new AphrontSideNavFilterView())
|
$nav = id(new AphrontSideNavFilterView())
|
||||||
->setIconNav(true)
|
->setIsProfileMenu(true)
|
||||||
->setBaseURI(new PhutilURI('/project/'));
|
->setBaseURI(new PhutilURI('/project/'));
|
||||||
|
|
||||||
$panels = $this->getPanels();
|
$panels = $this->getPanels();
|
||||||
|
@ -303,8 +303,7 @@ final class PhabricatorProfilePanelEngine extends Phobject {
|
||||||
->setIcon('fa-gear')
|
->setIcon('fa-gear')
|
||||||
->setHref($this->getPanelURI('configure/'))
|
->setHref($this->getPanelURI('configure/'))
|
||||||
->setDisabled(!$can_edit)
|
->setDisabled(!$can_edit)
|
||||||
->setWorkflow(!$can_edit)
|
->setWorkflow(!$can_edit);
|
||||||
->setRenderNameAsTooltip(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getConfigureURI() {
|
public function getConfigureURI() {
|
||||||
|
|
|
@ -82,9 +82,7 @@ final class PhabricatorLinkProfilePanel
|
||||||
$icon_class = 'fa-link';
|
$icon_class = 'fa-link';
|
||||||
}
|
}
|
||||||
|
|
||||||
$item = id(new PHUIListItemView())
|
$item = $this->newItem()
|
||||||
->setRenderNameAsTooltip(true)
|
|
||||||
->setType(PHUIListItemView::TYPE_ICON_NAV)
|
|
||||||
->setHref($href)
|
->setHref($href)
|
||||||
->setName($name)
|
->setName($name)
|
||||||
->setIcon($icon_class);
|
->setIcon($icon_class);
|
||||||
|
|
|
@ -51,4 +51,8 @@ abstract class PhabricatorProfilePanel extends Phobject {
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function newItem() {
|
||||||
|
return new PHUIListItemView();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,21 @@ final class PhabricatorProfilePanelIconSet
|
||||||
'icon' => 'fa-newspaper-o',
|
'icon' => 'fa-newspaper-o',
|
||||||
'name' => pht('Feed'),
|
'name' => pht('Feed'),
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'key' => 'phriction',
|
||||||
|
'icon' => 'fa-book',
|
||||||
|
'name' => pht('Phriction'),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'key' => 'conpherence',
|
||||||
|
'icon' => 'fa-comments',
|
||||||
|
'name' => pht('Conpherence'),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'key' => 'create',
|
||||||
|
'icon' => 'fa-plus',
|
||||||
|
'name' => pht('Create'),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$icons = array();
|
$icons = array();
|
||||||
|
|
|
@ -28,6 +28,7 @@ final class AphrontSideNavFilterView extends AphrontView {
|
||||||
private $classes = array();
|
private $classes = array();
|
||||||
private $menuID;
|
private $menuID;
|
||||||
private $iconNav;
|
private $iconNav;
|
||||||
|
private $isProfileMenu;
|
||||||
|
|
||||||
public function setMenuID($menu_id) {
|
public function setMenuID($menu_id) {
|
||||||
$this->menuID = $menu_id;
|
$this->menuID = $menu_id;
|
||||||
|
@ -55,6 +56,15 @@ final class AphrontSideNavFilterView extends AphrontView {
|
||||||
return $this->crumbs;
|
return $this->crumbs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setIsProfileMenu($is_profile) {
|
||||||
|
$this->isProfileMenu = $is_profile;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getIsProfileMenu() {
|
||||||
|
return $this->isProfileMenu;
|
||||||
|
}
|
||||||
|
|
||||||
public function setIconNav($nav) {
|
public function setIconNav($nav) {
|
||||||
$this->iconNav = $nav;
|
$this->iconNav = $nav;
|
||||||
return $this;
|
return $this;
|
||||||
|
@ -207,10 +217,17 @@ final class AphrontSideNavFilterView extends AphrontView {
|
||||||
|
|
||||||
$nav_classes = array();
|
$nav_classes = array();
|
||||||
$nav_classes[] = 'phabricator-nav';
|
$nav_classes[] = 'phabricator-nav';
|
||||||
if ($this->iconNav) {
|
|
||||||
|
if ($this->getIsProfileMenu()) {
|
||||||
|
require_celerity_resource('phui-profile-menu-css');
|
||||||
|
$nav_classes[] = 'phui-profile-menu';
|
||||||
|
} else if ($this->iconNav) {
|
||||||
$nav_classes[] = 'phabricator-icon-nav';
|
$nav_classes[] = 'phabricator-icon-nav';
|
||||||
|
} else {
|
||||||
|
$nav_classes[] = 'phabricator-basic-nav';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$nav_id = null;
|
$nav_id = null;
|
||||||
$drag_id = null;
|
$drag_id = null;
|
||||||
$content_id = celerity_generate_unique_node_id();
|
$content_id = celerity_generate_unique_node_id();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @provides phabricator-side-menu-view-css
|
* @provides phabricator-side-menu-view-css
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.phabricator-side-menu .phui-list-item-view {
|
.phabricator-basic-nav .phabricator-side-menu .phui-list-item-view {
|
||||||
display: block;
|
display: block;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
}
|
}
|
||||||
|
|
||||||
.phabricator-side-menu .phui-list-item-href {
|
.phabricator-basic-nav .phabricator-side-menu .phui-list-item-href {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 6px 8px 6px 24px;
|
padding: 6px 8px 6px 24px;
|
||||||
color: {$darkbluetext};
|
color: {$darkbluetext};
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
border-bottom-right-radius: 3px;
|
border-bottom-right-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.phabricator-side-menu .phui-list-item-selected {
|
.phabricator-basic-nav .phabricator-side-menu .phui-list-item-selected {
|
||||||
background-color: rgba(0,0,0,.05);
|
background-color: rgba(0,0,0,.05);
|
||||||
border-left: 4px solid {$sky};
|
border-left: 4px solid {$sky};
|
||||||
border-top-right-radius: 3px;
|
border-top-right-radius: 3px;
|
||||||
|
@ -30,16 +30,18 @@
|
||||||
background-color: rgba(0,0,0,.1);
|
background-color: rgba(0,0,0,.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.device-desktop .phabricator-side-menu .phui-list-item-selected
|
.device-desktop .phabricator-basic-nav .phabricator-side-menu
|
||||||
|
.phui-list-item-selected
|
||||||
a.phui-list-item-href:hover {
|
a.phui-list-item-href:hover {
|
||||||
background-color: rgba(0,0,0,.05);
|
background-color: rgba(0,0,0,.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
.phabricator-side-menu .phui-list-item-selected .phui-list-item-href {
|
.phabricator-basic-nav .phabricator-side-menu .phui-list-item-selected
|
||||||
|
.phui-list-item-href {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.phabricator-side-menu .phui-list-item-type-label {
|
.phabricator-basic-nav .phabricator-side-menu .phui-list-item-type-label {
|
||||||
padding: 6px 8px 4px 12px;
|
padding: 6px 8px 4px 12px;
|
||||||
color: {$darkbluetext};
|
color: {$darkbluetext};
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
@ -48,7 +50,8 @@
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.device-desktop .phabricator-side-menu a.phui-list-item-href:hover {
|
.device-desktop .phabricator-basic-nav .phabricator-side-menu
|
||||||
|
a.phui-list-item-href:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background-color: rgba(0,0,0,.07);
|
background-color: rgba(0,0,0,.07);
|
||||||
}
|
}
|
||||||
|
|
76
webroot/rsrc/css/phui/phui-profile-menu.css
Normal file
76
webroot/rsrc/css/phui/phui-profile-menu.css
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/**
|
||||||
|
* @provides phui-profile-menu-css
|
||||||
|
*/
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu {
|
||||||
|
background: {$menu.profile.background};
|
||||||
|
box-shadow: inset -2px 0 2px rgba(0, 0, 0, 0.150);
|
||||||
|
width: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-nav-local {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-desktop .phui-profile-menu .phabricator-nav-content {
|
||||||
|
margin-left: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-desktop .phui-profile-menu + .phabricator-standard-page-footer {
|
||||||
|
margin-left: 256px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-list-item-view {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-list-item-href {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 12px 8px 12px 48px;
|
||||||
|
font-size: 15px;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
color: {$menu.profile.text};
|
||||||
|
line-height: 22px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-list-item-icon,
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-icon-view {
|
||||||
|
position: absolute;
|
||||||
|
left: 13px;
|
||||||
|
top: 12px;
|
||||||
|
font-size: 20px;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
text-align: center;
|
||||||
|
color: {$menu.profile.icon};
|
||||||
|
background-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu
|
||||||
|
.phui-list-item-disabled
|
||||||
|
.phui-list-item-icon {
|
||||||
|
color: {$menu.profile.icon.disabled};
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-icon-view {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-desktop .phui-profile-menu .phabricator-side-menu
|
||||||
|
.phui-list-item-href:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.075);
|
||||||
|
color: {$menu.profile.text.selected};
|
||||||
|
}
|
||||||
|
|
||||||
|
.phui-profile-menu .phabricator-side-menu .phui-list-item-selected
|
||||||
|
.phui-list-item-href,
|
||||||
|
.device-desktop .phui-profile-menu .phabricator-side-menu
|
||||||
|
.phui-list-item-selected
|
||||||
|
.phui-list-item-href:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.150);
|
||||||
|
color: {$menu.profile.text.selected};
|
||||||
|
}
|
Loading…
Reference in a new issue