Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/auth/application/PhabricatorApplicationAuth.php b/src/applications/auth/application/PhabricatorApplicationAuth.php
index f6f2ba430f..73a48934ce 100644
--- a/src/applications/auth/application/PhabricatorApplicationAuth.php
+++ b/src/applications/auth/application/PhabricatorApplicationAuth.php
@@ -1,45 +1,50 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorApplicationAuth extends PhabricatorApplication {
public function shouldAppearInLaunchView() {
return false;
}
public function buildMainMenuItems(
PhabricatorUser $user,
PhabricatorController $controller = null) {
$items = array();
- if ($user->isLoggedIn()) {
- require_celerity_resource('phabricator-glyph-css');
+ if ($controller instanceof PhabricatorLogoutController) {
+ $class = 'main-menu-item-icon-logout-selected';
+ } else {
+ $class = 'main-menu-item-icon-logout';
+ }
+ if ($user->isLoggedIn()) {
$item = new PhabricatorMainMenuIconView();
$item->setName(pht('Log Out'));
- $item->addClass('glyph glyph-logout');
+ $item->addClass('main-menu-item-icon '.$class);
+ $item->setWorkflow(true);
$item->setHref('/logout/');
$item->setSortOrder(1.0);
$items[] = $item;
}
return $items;
}
}
diff --git a/src/applications/people/application/PhabricatorApplicationPeople.php b/src/applications/people/application/PhabricatorApplicationPeople.php
index 7889c9b6a7..30b8a6aed9 100644
--- a/src/applications/people/application/PhabricatorApplicationPeople.php
+++ b/src/applications/people/application/PhabricatorApplicationPeople.php
@@ -1,66 +1,76 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorApplicationPeople extends PhabricatorApplication {
public function getShortDescription() {
return 'User Accounts';
}
public function getBaseURI() {
return '/people/';
}
public function getIconURI() {
return celerity_get_resource_uri('/rsrc/image/app/app_people.png');
}
public function getRoutes() {
return array(
'/people/' => array(
'' => 'PhabricatorPeopleListController',
'logs/' => 'PhabricatorPeopleLogsController',
'edit/(?:(?P<id>\d+)/(?:(?P<view>\w+)/)?)?'
=> 'PhabricatorPeopleEditController',
'ldap/' => 'PhabricatorPeopleLdapController',
),
'/p/(?P<username>[\w._-]+)/(?:(?P<page>\w+)/)?'
=> 'PhabricatorPeopleProfileController',
);
}
public function buildMainMenuItems(
PhabricatorUser $user,
PhabricatorController $controller = null) {
$items = array();
+ if (($controller instanceof PhabricatorPeopleProfileController) &&
+ ($controller->getProfileUser()) &&
+ ($controller->getProfileUser()->getPHID() == $user->getPHID())) {
+ $class = 'main-menu-item-icon-profile-selected';
+ } else {
+ $class = 'main-menu-item-icon-profile-not-selected';
+ }
+
if ($user->isLoggedIn()) {
- require_celerity_resource('phabricator-glyph-css');
+ $image = $user->loadProfileImageURI();
+
$item = new PhabricatorMainMenuIconView();
$item->setName($user->getUsername());
- $item->addClass('glyph glyph-profile');
+ $item->addClass('main-menu-item-icon-profile '.$class);
+ $item->addStyle('background-image: url('.$image.')');
$item->setHref('/p/'.$user->getUsername().'/');
$item->setSortOrder(0.0);
$items[] = $item;
}
return $items;
}
}
diff --git a/src/applications/people/application/PhabricatorApplicationSettings.php b/src/applications/people/application/PhabricatorApplicationSettings.php
index 963b526e25..70f9508e3f 100644
--- a/src/applications/people/application/PhabricatorApplicationSettings.php
+++ b/src/applications/people/application/PhabricatorApplicationSettings.php
@@ -1,61 +1,65 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorApplicationSettings extends PhabricatorApplication {
public function getBaseURI() {
return '/settings/';
}
public function getShortDescription() {
return 'User Preferences';
}
public function getIconURI() {
return celerity_get_resource_uri('/rsrc/image/app/app_settings.png');
}
public function getRoutes() {
return array(
'/settings/' => array(
'(?:page/(?P<page>[^/]+)/)?' => 'PhabricatorUserSettingsController',
),
);
}
public function buildMainMenuItems(
PhabricatorUser $user,
PhabricatorController $controller = null) {
$items = array();
- if ($user->isLoggedIn()) {
- require_celerity_resource('phabricator-glyph-css');
+ if ($controller instanceof PhabricatorUserSettingsController) {
+ $class = 'main-menu-item-icon-settings-selected';
+ } else {
+ $class = 'main-menu-item-icon-settings';
+ }
+ if ($user->isLoggedIn()) {
$item = new PhabricatorMainMenuIconView();
$item->setName(pht('Settings'));
- $item->addClass('glyph glyph-settings');
+ $item->addClass('main-menu-item-icon '.$class);
$item->setHref('/settings/');
$item->setSortOrder(0.90);
$items[] = $item;
}
return $items;
}
}
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileController.php b/src/applications/people/controller/PhabricatorPeopleProfileController.php
index 85ffb86a41..3d60cec5ab 100644
--- a/src/applications/people/controller/PhabricatorPeopleProfileController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileController.php
@@ -1,230 +1,237 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorPeopleProfileController
extends PhabricatorPeopleController {
private $username;
private $page;
+ private $profileUser;
public function willProcessRequest(array $data) {
$this->username = idx($data, 'username');
$this->page = idx($data, 'page');
}
+ public function getProfileUser() {
+ return $this->profileUser;
+ }
+
public function processRequest() {
$viewer = $this->getRequest()->getUser();
$user = id(new PhabricatorUser())->loadOneWhere(
'userName = %s',
$this->username);
if (!$user) {
return new Aphront404Response();
}
+ $this->profileUser = $user;
+
require_celerity_resource('phabricator-profile-css');
$profile = id(new PhabricatorUserProfile())->loadOneWhere(
'userPHID = %s',
$user->getPHID());
if (!$profile) {
$profile = new PhabricatorUserProfile();
}
$username = phutil_escape_uri($user->getUserName());
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI('/p/'.$username.'/'));
$nav->addFilter('feed', 'Feed');
$nav->addFilter('about', 'About');
$nav->addSpacer();
$nav->addLabel('Activity');
$external_arrow = "\xE2\x86\x97";
$nav->addFilter(
null,
"Revisions {$external_arrow}",
'/differential/filter/revisions/'.$username.'/');
$nav->addFilter(
null,
"Tasks {$external_arrow}",
'/maniphest/view/action/?users='.$user->getPHID());
$nav->addFilter(
null,
"Commits {$external_arrow}",
'/audit/view/author/'.$username.'/');
$oauths = id(new PhabricatorUserOAuthInfo())->loadAllWhere(
'userID = %d',
$user->getID());
$oauths = mpull($oauths, null, 'getOAuthProvider');
$providers = PhabricatorOAuthProvider::getAllProviders();
$added_spacer = false;
foreach ($providers as $provider) {
if (!$provider->isProviderEnabled()) {
continue;
}
$provider_key = $provider->getProviderKey();
if (!isset($oauths[$provider_key])) {
continue;
}
$name = $provider->getProviderName().' Profile';
$href = $oauths[$provider_key]->getAccountURI();
if ($href) {
if (!$added_spacer) {
$nav->addSpacer();
$nav->addLabel('Linked Accounts');
$added_spacer = true;
}
$nav->addFilter(null, $name.' '.$external_arrow, $href);
}
}
$this->page = $nav->selectFilter($this->page, 'feed');
switch ($this->page) {
case 'feed':
$content = $this->renderUserFeed($user);
break;
case 'about':
$content = $this->renderBasicInformation($user, $profile);
break;
default:
throw new Exception("Unknown page '{$this->page}'!");
}
$picture = $user->loadProfileImageURI();
$header = new PhabricatorProfileHeaderView();
$header
->setProfilePicture($picture)
->setName($user->getUserName().' ('.$user->getRealName().')')
->setDescription($profile->getTitle());
if ($user->getIsDisabled()) {
$header->setStatus('Disabled');
} else {
$statuses = id(new PhabricatorUserStatus())->loadCurrentStatuses(
array($user->getPHID()));
if ($statuses) {
$header->setStatus(reset($statuses)->getStatusDescription($viewer));
}
}
$header->appendChild($nav);
$nav->appendChild(
'<div style="padding: 1em;">'.$content.'</div>');
if ($user->getPHID() == $viewer->getPHID()) {
$nav->addSpacer();
$nav->addFilter(null, 'Edit Profile...', '/settings/page/profile/');
}
if ($viewer->getIsAdmin()) {
$nav->addSpacer();
$nav->addFilter(
null,
'Administrate User...',
'/people/edit/'.$user->getID().'/');
}
return $this->buildStandardPageResponse(
$header,
array(
'title' => $user->getUsername(),
));
}
private function renderBasicInformation($user, $profile) {
$blurb = nonempty(
$profile->getBlurb(),
'//Nothing is known about this rare specimen.//');
$engine = PhabricatorMarkupEngine::newProfileMarkupEngine();
$blurb = $engine->markupText($blurb);
$viewer = $this->getRequest()->getUser();
$content =
'<div class="phabricator-profile-info-group">
<h1 class="phabricator-profile-info-header">Basic Information</h1>
<div class="phabricator-profile-info-pane">
<table class="phabricator-profile-info-table">
<tr>
<th>PHID</th>
<td>'.phutil_escape_html($user->getPHID()).'</td>
</tr>
<tr>
<th>User Since</th>
<td>'.phabricator_datetime($user->getDateCreated(),
$viewer).
'</td>
</tr>
</table>
</div>
</div>';
$content .=
'<div class="phabricator-profile-info-group">
<h1 class="phabricator-profile-info-header">Flavor Text</h1>
<div class="phabricator-profile-info-pane">
<table class="phabricator-profile-info-table">
<tr>
<th>Blurb</th>
<td>'.$blurb.'</td>
</tr>
</table>
</div>
</div>';
return $content;
}
private function renderUserFeed(PhabricatorUser $user) {
$viewer = $this->getRequest()->getUser();
$query = new PhabricatorFeedQuery();
$query->setFilterPHIDs(
array(
$user->getPHID(),
));
$query->setLimit(100);
$query->setViewer($viewer);
$stories = $query->execute();
$builder = new PhabricatorFeedBuilder($stories);
$builder->setUser($viewer);
$view = $builder->buildView();
return
'<div class="phabricator-profile-info-group">
<h1 class="phabricator-profile-info-header">Activity Feed</h1>
<div class="phabricator-profile-info-pane">
'.$view->render().'
</div>
</div>';
}
}
diff --git a/src/view/page/menu/PhabricatorMainMenuIconView.php b/src/view/page/menu/PhabricatorMainMenuIconView.php
index 4a5f18423c..cb8683609e 100644
--- a/src/view/page/menu/PhabricatorMainMenuIconView.php
+++ b/src/view/page/menu/PhabricatorMainMenuIconView.php
@@ -1,95 +1,109 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
final class PhabricatorMainMenuIconView extends AphrontView {
private $classes = array();
private $href;
private $name;
private $sortOrder = 0.5;
+ private $workflow;
+ private $style;
public function setName($name) {
$this->name = $name;
return $this;
}
+ public function setWorkflow($workflow) {
+ $this->workflow = $workflow;
+ return $this;
+ }
+
public function getName() {
return $this->name;
}
public function setHref($href) {
$this->href = $href;
return $this;
}
public function getHref() {
return $this->href;
}
public function addClass($class) {
$this->classes[] = $class;
return $this;
}
+ public function addStyle($style) {
+ $this->style = $style;
+ return $this;
+ }
+
/**
* Provide a float, where 0.0 is the profile item and 1.0 is the logout
* item. Normally you should pick something between the two.
*
* @param float Sort order.
* @return this
*/
public function setSortOrder($sort_order) {
$this->sortOrder = $sort_order;
return $this;
}
public function getSortOrder() {
return $this->sortOrder;
}
public function render() {
$name = $this->getName();
$href = $this->getHref();
$classes = $this->classes;
$classes[] = 'phabricator-main-menu-icon';
$label = javelin_render_tag(
'a',
array(
'href' => $href,
'class' => 'phabricator-main-menu-icon-label',
),
phutil_escape_html($name));
$item = javelin_render_tag(
'a',
array(
'href' => $href,
'class' => implode(' ', $classes),
+ 'style' => $this->style,
+ 'sigil' => $this->workflow ? 'workflow' : null,
),
'');
$group = new PhabricatorMainMenuGroupView();
$group->appendChild($item);
$group->appendChild($label);
return $group->render();
}
}
diff --git a/webroot/rsrc/css/application/base/glyph.css b/webroot/rsrc/css/application/base/glyph.css
deleted file mode 100644
index d154d47711..0000000000
--- a/webroot/rsrc/css/application/base/glyph.css
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @provides phabricator-glyph-css
- */
-
-.glyph {
- background-size: 26px auto;
- background-image: url(/rsrc/image/glyph_sprite.png);
-}
-
-@media only screen and (min-device-pixel-ratio: 2.0) {
- .glyph {
- background-image: url(/rsrc/image/glyph_sprite2x.png);
- }
-}
-
-.glyph-profile {
- background-position: 0 0;
-}
-
-.glyph-profile-active {
- background-position: 0 -26px;
-}
-
-.glyph-profile:hover {
- background-position: 0 -130px;
-}
-
-.glyph-settings {
- background-position: 0px -26px;
-}
-
-.glyph-settings-active {
- background-position: 0 0;
-}
-
-.glyph-settings:hover {
- background-position: 0 -156px;
-}
-
-.glyph-logout {
- background-position: 0 -52px;
-}
-
-.glyph-logout-active {
- background-position: 0 -52px;
-}
-
-.glyph-logout:hover {
- background-position: 0 -182px;
-}
diff --git a/webroot/rsrc/css/application/base/main-menu-view.css b/webroot/rsrc/css/application/base/main-menu-view.css
index 8c4d170335..7e1995322b 100644
--- a/webroot/rsrc/css/application/base/main-menu-view.css
+++ b/webroot/rsrc/css/application/base/main-menu-view.css
@@ -1,369 +1,420 @@
/**
* @provides phabricator-main-menu-view
*/
/* - Main Menu -----------------------------------------------------------------
Main menu at the top of every page that has chrome. It reacts to resolution
changes in order to behave reasonably on tablets and phones.
*/
.phabricator-main-menu {
background: #33393d;
position: relative;
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.25);
height: 44px;
}
.phabricator-main-menu a:hover {
text-decoration: none;
}
.device-desktop .phabricator-main-menu {
text-align: right;
position: fixed;
width: 100%;
z-index: 6;
top: 0;
padding-right: 44px;
}
.phabricator-main-menu-spacer {
display: none;
}
.device-desktop .phabricator-main-menu-spacer {
height: 44px;
position: relative;
display: block;
}
/* - Main Menu Group -----------------------------------------------------------
Container representing a single item on the main menu. For desktops these lay
out horizontally; on phones they switch to vertical.
*/
.phabricator-main-menu-group {
height: 44px;
position: relative;
}
.device-desktop .phabricator-main-menu-group {
display: inline-block;
text-align: left;
}
.device-tablet .phabricator-main-menu-group,
.device-phone .phabricator-main-menu-group {
width: 100%;
display: block;
}
.device-tablet .phabricator-main-menu-group + .phabricator-main-menu-group,
.device-phone .phabricator-main-menu-group + .phabricator-main-menu-group {
margin-top: 1px;
}
/* - Logo ----------------------------------------------------------------------
The "Phabricator" logo group in the main menu. On tablet and phone devices,
this shows a "reveal" button to expand/collapse the rest of the menu.
*/
.device-desktop .phabricator-main-menu-group-logo {
float: left;
}
.phabricator-main-menu-logo {
display: inline-block;
height: 44px;
width: 180px;
margin-right: 12px;
background: 12px 9px url(/rsrc/image/logo_grey.png) no-repeat;
}
.phabricator-main-menu-logo span {
display: none;
}
/* - Expand/Collapse Button ----------------------------------------------------
On phones, the menu switches to a vertical layout and uses a button to expand
or collapse the items.
*/
.phabricator-main-menu-expand-button {
position: absolute;
right: 10px;
top: 10px;
display: block;
width: 40px;
height: 28px;
text-align: center;
background: #22292d url(/rsrc/image/lines.png) no-repeat 8px 6px;
border-radius: 6px;
border: 1px solid #111111;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 1px 0 rgba(255, 255, 255, 0.075);
}
.device-desktop .phabricator-main-menu-expand-button {
display: none;
}
.device-tablet .phabricator-main-menu-expand-button,
.device-phone .phabricator-main-menu-expand-button {
display: block;
}
.phabricator-main-menu-expand-button span {
display: none;
}
.phabricator-main-menu-reveal .phabricator-main-menu-expand-button {
background-color: #55595d;
}
/* - Icon Menus ----------------------------------------------------------------
These are the small icons for actions like "Settings" and "Log Out" which
appear on the right side of the main menu. On tablets and phones these layout
vertically.
*/
.phabricator-main-menu-icon {
width: 26px;
height: 26px;
- margin: 9px 4px;
+ margin: 9px 6px;
display: inline-block;
background-repeat: no-repeat;
}
.device-desktop .phabricator-main-menu-icon-label {
display: none;
}
.device-tablet .phabricator-main-menu-icon-label,
.device-phone .phabricator-main-menu-icon-label {
font-weight: bold;
color: #eeeeee;
position: absolute;
display: block;
line-height: 44px;
left: 60px;
right: 0px;
top: 0px;
}
.device-tablet .phabricator-main-menu-icon,
.device-phone .phabricator-main-menu-icon {
margin-left: 20px;
position: absolute;
}
+.main-menu-item-icon {
+ background-repeat: no-repeat;
+ background-size: 26px 26px;
+}
+
+.main-menu-item-icon-settings {
+ background-image: url(/rsrc/image/menu/icon_settings.png);
+}
+
+.main-menu-item-icon-settings:hover {
+ background-image: url(/rsrc/image/menu/icon_settings_hover.png);
+}
+
+.main-menu-item-icon-settings-selected {
+ background-image: url(/rsrc/image/menu/icon_settings_selected.png);
+}
+
+.main-menu-item-icon-logout {
+ background-image: url(/rsrc/image/menu/icon_logout.png);
+}
+
+.main-menu-item-icon-logout:hover {
+ background-image: url(/rsrc/image/menu/icon_logout_hover.png);
+}
+
+.main-menu-item-icon-logout-selected {
+ background-image: url(/rsrc/image/menu/icon_logout_selected.png);
+}
+
+.main-menu-item-icon-profile {
+ background-repeat: no-repeat;
+ background-size: 26px 26px;
+}
+
+.device-desktop .main-menu-item-icon-profile {
+ background-position: 12px 9px;
+ margin: 0 6px;
+ padding: 0 12px;
+ height: 44px;
+ border-width: 0 1px;
+ border-style: solid;
+ border-color: #44494d;
+}
+
+.main-menu-item-icon-profile-not-selected:hover {
+ background-color: #44494d;
+}
+
+.main-menu-item-icon-profile-selected {
+ background-color: #44494d;
+}
/* - Search --------------------------------------------------------------------
The main search input in the menu bar.
*/
.device-desktop .phabricator-main-menu-search {
width: 220px;
}
.phabricator-main-menu-search-container {
padding: 10px 0;
position: relative;
height: 24px;
}
.phabricator-main-menu-search-target {
position: absolute;
top: 46px;
}
.device-desktop .phabricator-main-menu-search-target {
width: 320px;
margin-left: -150px;
}
.device-tablet .phabricator-main-menu-search-target,
.device-phone .phabricator-main-menu-search-target {
width: 100%;
margin-left: -25px;
}
.device-desktop .phabricator-main-menu-search-container {
margin: 0 8px 0 50px;
}
.device-tablet .phabricator-main-menu-search-container,
.device-phone .phabricator-main-menu-search-container {
margin: 0 18px 0 60px;
}
.phabricator-main-menu-search input {
outline: 0;
margin: 0;
width: 100%;
right: 0;
position: absolute;
border: 1px solid #333333;
border-radius: 12px;
background: #727272;
height: 12px;
line-height: 12px;
box-shadow: 0px 1px 1px rgba(128, 128, 128, 0.25);
padding: 6px 32px 6px 10px;
}
.phabricator-main-menu-search input:focus {
background: #c9c9c9;
}
.phabricator-main-menu-search input.jx-typeahead-placeholder {
color: #aaaaaa;
}
.phabricator-main-menu-search button {
position: absolute;
color: transparent;
background: transparent 5px 6px url(/rsrc/image/search.png) no-repeat;
border: none;
outline: none;
box-shadow: none;
height: 20px;
width: 20px;
top: 11px;
right: 6px;
}
.phabricator-main-menu-search-target div.jx-typeahead-results {
border-radius: 4px;
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.35);
border: 1px solid #33393d;
}
.phabricator-main-menu-search-target div.jx-typeahead-results a.jx-result {
border: 0;
}
.phabricator-main-menu-search-target div.jx-typeahead-results a.focused,
.phabricator-main-menu-search-target div.jx-typeahead-results a:hover {
background: #3875d7;
}
.phabricator-main-search-typeahead-result {
display: block;
padding: 4px 4px 4px 38px;
background-position: 4px 4px;
background-size: 25px 25px;
background-repeat: no-repeat;
}
.phabricator-main-search-typeahead-result .result-name {
display: block;
font-weight: bold;
color: #444444;
}
.focused .phabricator-main-search-typeahead-result .result-name,
a:hover .phabricator-main-search-typeahead-result .result-name {
color: #eeeeee;
}
.phabricator-main-search-typeahead-result .result-type {
color: #888888;
}
.focused .phabricator-main-search-typeahead-result .result-type,
a:hover .phabricator-main-search-typeahead-result .result-type {
color: #dddddd;
}
/* - Collapsible ---------------------------------------------------------------
By default, groups are collapsible, which means they'll be hidden on phones
and respond to the menu toggle button.
*/
.device-tablet .phabricator-main-menu-collapsible,
.device-phone .phabricator-main-menu-collapsible {
background: #44494d;
display: none;
}
.phabricator-main-menu-reveal {
height: auto;
}
.device-tablet .phabricator-main-menu-reveal .phabricator-main-menu-collapsible,
.device-phone .phabricator-main-menu-reveal .phabricator-main-menu-collapsible {
display: block;
}
/* - Alert ---------------------------------------------------------------------
Alert menus are like icon menus but don't obey collapse rules.
*/
.phabricator-main-menu-alert {
display: inline-block;
position: relative;
}
.phabricator-main-menu-alert-item {
width: 26px;
height: 26px;
margin: 9px;
display: block;
}
.phabricator-main-menu-alert-indicator {
display: none;
}
.phabricator-main-menu-alert-indicator-unread {
position: absolute;
display: block;
right: 0px;
top: 2px;
padding: 1px 4px 2px;
background: #dd3333;
border: 1px solid #aa0000;
font-size: 11px;
box-shadow: 0px 0px 6px rgba(255, 255, 255, 0.5);
border-radius: 6px;
font-weight: bold;
color: #ffffff;
}
.phabricator-main-menu-alert-item-notification {
background: url(/rsrc/image/bolt.png) no-repeat;
}
diff --git a/webroot/rsrc/image/glyph_sprite.png b/webroot/rsrc/image/glyph_sprite.png
deleted file mode 100644
index dced9f4c93..0000000000
Binary files a/webroot/rsrc/image/glyph_sprite.png and /dev/null differ
diff --git a/webroot/rsrc/image/glyph_sprite2x.png b/webroot/rsrc/image/glyph_sprite2x.png
deleted file mode 100644
index 6f330cf547..0000000000
Binary files a/webroot/rsrc/image/glyph_sprite2x.png and /dev/null differ
diff --git a/webroot/rsrc/image/menu/icon_logout.png b/webroot/rsrc/image/menu/icon_logout.png
new file mode 100644
index 0000000000..a484cba5d6
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout.png differ
diff --git a/webroot/rsrc/image/menu/icon_logout2x.png b/webroot/rsrc/image/menu/icon_logout2x.png
new file mode 100644
index 0000000000..9d63e6ed78
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout2x.png differ
diff --git a/webroot/rsrc/image/menu/icon_logout2x_hover.png b/webroot/rsrc/image/menu/icon_logout2x_hover.png
new file mode 100644
index 0000000000..efb9348a2b
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout2x_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_logout2x_selected.png b/webroot/rsrc/image/menu/icon_logout2x_selected.png
new file mode 100644
index 0000000000..1e6532f801
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout2x_selected.png differ
diff --git a/webroot/rsrc/image/menu/icon_logout_hover.png b/webroot/rsrc/image/menu/icon_logout_hover.png
new file mode 100644
index 0000000000..c9cca1ccaf
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_logout_selected.png b/webroot/rsrc/image/menu/icon_logout_selected.png
new file mode 100644
index 0000000000..93767459c0
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_logout_selected.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings.png b/webroot/rsrc/image/menu/icon_settings.png
new file mode 100644
index 0000000000..489cbcbdff
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings2x.png b/webroot/rsrc/image/menu/icon_settings2x.png
new file mode 100644
index 0000000000..429b5ccdb3
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings2x.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings2x_hover.png b/webroot/rsrc/image/menu/icon_settings2x_hover.png
new file mode 100644
index 0000000000..4d508ad0ba
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings2x_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings2x_selected.png b/webroot/rsrc/image/menu/icon_settings2x_selected.png
new file mode 100644
index 0000000000..ed359a04f4
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings2x_selected.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings_hover.png b/webroot/rsrc/image/menu/icon_settings_hover.png
new file mode 100644
index 0000000000..69606c5e36
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_settings_selected.png b/webroot/rsrc/image/menu/icon_settings_selected.png
new file mode 100644
index 0000000000..adbaf0f904
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_settings_selected.png differ
diff --git a/webroot/rsrc/image/menu/icon_task.png b/webroot/rsrc/image/menu/icon_task.png
new file mode 100644
index 0000000000..6b91a6f99d
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task.png differ
diff --git a/webroot/rsrc/image/menu/icon_task2x.png b/webroot/rsrc/image/menu/icon_task2x.png
new file mode 100644
index 0000000000..d25bdd64a3
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task2x.png differ
diff --git a/webroot/rsrc/image/menu/icon_task2x_hover.png b/webroot/rsrc/image/menu/icon_task2x_hover.png
new file mode 100644
index 0000000000..9c4e2661e7
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task2x_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_task2x_selected.png b/webroot/rsrc/image/menu/icon_task2x_selected.png
new file mode 100644
index 0000000000..84a123d7bb
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task2x_selected.png differ
diff --git a/webroot/rsrc/image/menu/icon_task_hover.png b/webroot/rsrc/image/menu/icon_task_hover.png
new file mode 100644
index 0000000000..6bcb6fff04
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task_hover.png differ
diff --git a/webroot/rsrc/image/menu/icon_task_selected.png b/webroot/rsrc/image/menu/icon_task_selected.png
new file mode 100644
index 0000000000..d37127dd89
Binary files /dev/null and b/webroot/rsrc/image/menu/icon_task_selected.png differ

File Metadata

Mime Type
text/x-diff
Expires
Wed, Apr 30, 5:19 PM (1 d, 6 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
108773
Default Alt Text
(31 KB)

Event Timeline