diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -81,6 +81,7 @@ 'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6', 'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b', 'rsrc/css/application/paste/paste.css' => '1898e534', + 'rsrc/css/application/people/people-picture-menu-item.css' => '1ac65ef7', 'rsrc/css/application/people/people-profile.css' => '2473d929', 'rsrc/css/application/phame/phame.css' => '53fa6236', 'rsrc/css/application/pholio/pholio-edit.css' => '07676f51', @@ -96,7 +97,7 @@ 'rsrc/css/application/policy/policy.css' => '957ea14c', 'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96', 'rsrc/css/application/project/project-card-view.css' => 'f25746f5', - 'rsrc/css/application/project/project-view.css' => '6936dc6e', + 'rsrc/css/application/project/project-view.css' => 'ceabdbaa', 'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733', 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5', 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd', @@ -777,6 +778,7 @@ 'owners-path-editor-css' => '2f00933b', 'paste-css' => '1898e534', 'path-typeahead' => 'f7fc67ec', + 'people-picture-menu-item-css' => '1ac65ef7', 'people-profile-css' => '2473d929', 'phabricator-action-list-view-css' => '5679229f', 'phabricator-busy' => '59a7976a', @@ -904,7 +906,7 @@ 'policy-transaction-detail-css' => '82100a43', 'ponder-view-css' => 'fbd45f96', 'project-card-view-css' => 'f25746f5', - 'project-view-css' => '6936dc6e', + 'project-view-css' => 'ceabdbaa', 'releeph-core' => '9b3c5733', 'releeph-preview-branch' => 'b7a6f4a5', 'releeph-request-differential-create-dialog' => '8d8b92cd', 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 @@ -3323,6 +3323,7 @@ 'PhabricatorPeopleNewController' => 'applications/people/controller/PhabricatorPeopleNewController.php', 'PhabricatorPeopleNoOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleNoOwnerDatasource.php', 'PhabricatorPeopleOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleOwnerDatasource.php', + 'PhabricatorPeoplePictureProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeoplePictureProfileMenuItem.php', 'PhabricatorPeopleProfileController' => 'applications/people/controller/PhabricatorPeopleProfileController.php', 'PhabricatorPeopleProfileEditController' => 'applications/people/controller/PhabricatorPeopleProfileEditController.php', 'PhabricatorPeopleProfileManageController' => 'applications/people/controller/PhabricatorPeopleProfileManageController.php', @@ -8455,6 +8456,7 @@ 'PhabricatorPeopleNewController' => 'PhabricatorPeopleController', 'PhabricatorPeopleNoOwnerDatasource' => 'PhabricatorTypeaheadDatasource', 'PhabricatorPeopleOwnerDatasource' => 'PhabricatorTypeaheadCompositeDatasource', + 'PhabricatorPeoplePictureProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorPeopleProfileController' => 'PhabricatorPeopleController', 'PhabricatorPeopleProfileEditController' => 'PhabricatorPeopleProfileController', 'PhabricatorPeopleProfileManageController' => 'PhabricatorPeopleProfileController', diff --git a/src/applications/files/transform/PhabricatorFileThumbnailTransform.php b/src/applications/files/transform/PhabricatorFileThumbnailTransform.php --- a/src/applications/files/transform/PhabricatorFileThumbnailTransform.php +++ b/src/applications/files/transform/PhabricatorFileThumbnailTransform.php @@ -58,9 +58,9 @@ public function generateTransforms() { return array( id(new PhabricatorFileThumbnailTransform()) - ->setName(pht("Profile (200px \xC3\x97 200px)")) + ->setName(pht("Profile (400px \xC3\x97 400px)")) ->setKey(self::TRANSFORM_PROFILE) - ->setDimensions(200, 200) + ->setDimensions(400, 400) ->setScaleUp(true), id(new PhabricatorFileThumbnailTransform()) ->setName(pht("Pinboard (280px \xC3\x97 210px)")) diff --git a/src/applications/people/controller/PhabricatorPeopleProfileController.php b/src/applications/people/controller/PhabricatorPeopleProfileController.php --- a/src/applications/people/controller/PhabricatorPeopleProfileController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileController.php @@ -98,7 +98,8 @@ $header = id(new PHUIHeaderView()) ->setHeader(array($user->getFullName(), $tag)) ->setImage($picture) - ->setProfileHeader(true); + ->setProfileHeader(true) + ->addClass('people-profile-header'); if ($user->getIsDisabled()) { $header->setStatus('fa-ban', 'red', pht('Disabled')); diff --git a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php --- a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php +++ b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php @@ -5,6 +5,7 @@ const ITEM_PROFILE = 'people.profile'; const ITEM_MANAGE = 'people.manage'; + const ITEM_PICTURE = 'people.picture'; protected function isMenuEngineConfigurable() { return false; @@ -23,6 +24,10 @@ $items = array(); $items[] = $this->newItem() + ->setBuiltinKey(self::ITEM_PICTURE) + ->setMenuItemKey(PhabricatorPeoplePictureProfileMenuItem::MENUITEMKEY); + + $items[] = $this->newItem() ->setBuiltinKey(self::ITEM_PROFILE) ->setMenuItemKey(PhabricatorPeopleDetailsProfileMenuItem::MENUITEMKEY); diff --git a/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php @@ -39,17 +39,14 @@ PhabricatorProfileMenuItemConfiguration $config) { $user = $config->getProfileObject(); - - $picture = $user->getProfileImageURI(); - $name = $user->getUsername(); $href = urisprintf( '/p/%s/', $user->getUsername()); $item = $this->newItem() ->setHref($href) - ->setName($name) - ->setProfileImage($picture); + ->setName(pht('Profile')) + ->setIcon('fa-user'); return array( $item, diff --git a/src/applications/people/menuitem/PhabricatorPeoplePictureProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeoplePictureProfileMenuItem.php new file mode 100644 --- /dev/null +++ b/src/applications/people/menuitem/PhabricatorPeoplePictureProfileMenuItem.php @@ -0,0 +1,76 @@ +getDefaultName(); + } + + public function buildEditEngineFields( + PhabricatorProfileMenuItemConfiguration $config) { + return array(); + } + + protected function newNavigationMenuItems( + PhabricatorProfileMenuItemConfiguration $config) { + + $user = $config->getProfileObject(); + require_celerity_resource('people-picture-menu-item-css'); + + $picture = $user->getProfileImageURI(); + $name = $user->getUsername(); + $href = urisprintf( + '/p/%s/', + $user->getUsername()); + + $photo = phutil_tag( + 'img', + array( + 'src' => $picture, + 'class' => 'people-menu-image', + )); + + $can_edit = PhabricatorPolicyFilter::hasCapability( + $this->getViewer(), + $user, + PhabricatorPolicyCapability::CAN_EDIT); + + if ($can_edit) { + $id = $user->getID(); + $href = "/people/picture/{$id}/"; + } + + $view = phutil_tag_div('people-menu-image-container', $photo); + $view = phutil_tag( + 'a', + array( + 'href' => $href, + ), + $view); + + $item = $this->newItem() + ->appendChild($view); + + return array( + $item, + ); + } + +} diff --git a/webroot/rsrc/css/application/people/people-picture-menu-item.css b/webroot/rsrc/css/application/people/people-picture-menu-item.css new file mode 100644 --- /dev/null +++ b/webroot/rsrc/css/application/people/people-picture-menu-item.css @@ -0,0 +1,18 @@ +/** + * @provides people-picture-menu-item-css + */ + +.people-menu-image { + width: 160px; + height: 160px; + border: 1px solid {$thinblueborder}; +} + +.people-menu-image-container { + background: #fff; + padding: 4px; + border-radius: 3px; + border: 1px solid {$lightblueborder}; + margin: 4px 0px 16px 20px; + display: inline-block; +} diff --git a/webroot/rsrc/css/application/project/project-view.css b/webroot/rsrc/css/application/project/project-view.css --- a/webroot/rsrc/css/application/project/project-view.css +++ b/webroot/rsrc/css/application/project/project-view.css @@ -87,3 +87,11 @@ .profile-no-badges { padding: 24px 0; } + +.people-profile-header.phui-profile-header .phui-header-col1 { + display: none; +} + +.device .people-profile-header.phui-profile-header .phui-header-col1 { + display: table-cell; +}