@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add a large profile picture to Projects

Summary: The ports over a similar "profile image" menu item to Projects. It gives us some room to use the project icon in the sidenav along with a larger photo. It also will open up some room in the sub-page headers for us to focus on that page, and not the identity of the project at hand. Expect a few more project related touch up diffs.

Test Plan:
Review new projects menu on a few projects, update the image, see new image. Great for team photos.

{F4951264}

Reviewers: epriestley, amckinley

Reviewed By: epriestley

Subscribers: Korvin

Differential Revision: https://secure.phabricator.com/D17869

+84 -5
+2
src/__phutil_library_map__.php
··· 3635 3635 'PhabricatorProjectOrUserDatasource' => 'applications/project/typeahead/PhabricatorProjectOrUserDatasource.php', 3636 3636 'PhabricatorProjectOrUserFunctionDatasource' => 'applications/project/typeahead/PhabricatorProjectOrUserFunctionDatasource.php', 3637 3637 'PhabricatorProjectPHIDResolver' => 'applications/phid/resolver/PhabricatorProjectPHIDResolver.php', 3638 + 'PhabricatorProjectPictureProfileMenuItem' => 'applications/project/menuitem/PhabricatorProjectPictureProfileMenuItem.php', 3638 3639 'PhabricatorProjectPointsProfileMenuItem' => 'applications/project/menuitem/PhabricatorProjectPointsProfileMenuItem.php', 3639 3640 'PhabricatorProjectProfileController' => 'applications/project/controller/PhabricatorProjectProfileController.php', 3640 3641 'PhabricatorProjectProfileMenuEngine' => 'applications/project/engine/PhabricatorProjectProfileMenuEngine.php', ··· 9020 9021 'PhabricatorProjectOrUserDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 9021 9022 'PhabricatorProjectOrUserFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 9022 9023 'PhabricatorProjectPHIDResolver' => 'PhabricatorPHIDResolver', 9024 + 'PhabricatorProjectPictureProfileMenuItem' => 'PhabricatorProfileMenuItem', 9023 9025 'PhabricatorProjectPointsProfileMenuItem' => 'PhabricatorProfileMenuItem', 9024 9026 'PhabricatorProjectProfileController' => 'PhabricatorProjectController', 9025 9027 'PhabricatorProjectProfileMenuEngine' => 'PhabricatorProfileMenuEngine',
+5 -2
src/applications/project/controller/PhabricatorProjectManageController.php
··· 21 21 $header = id(new PHUIHeaderView()) 22 22 ->setHeader(pht('Project History')) 23 23 ->setUser($viewer) 24 - ->setPolicyObject($project) 25 - ->setImage($picture); 24 + ->setPolicyObject($project); 26 25 27 26 if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) { 28 27 $header->setStatus('fa-check', 'bluegrey', pht('Active')); ··· 45 44 $crumbs->addTextCrumb(pht('Manage')); 46 45 $crumbs->setBorder(true); 47 46 47 + require_celerity_resource('project-view-css'); 48 + 48 49 $manage = id(new PHUITwoColumnView()) 49 50 ->setHeader($header) 50 51 ->setCurtain($curtain) 51 52 ->addPropertySection(pht('Details'), $properties) 53 + ->addClass('project-view-home') 54 + ->addClass('project-view-people-home') 52 55 ->setMainColumn( 53 56 array( 54 57 $timeline,
+1 -1
src/applications/project/controller/PhabricatorProjectProfileController.php
··· 29 29 ->setHeader(array($project->getDisplayName(), $tag)) 30 30 ->setUser($viewer) 31 31 ->setPolicyObject($project) 32 - ->setImage($picture) 33 32 ->setProfileHeader(true); 34 33 35 34 if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) { ··· 92 91 $home = id(new PHUITwoColumnView()) 93 92 ->setHeader($header) 94 93 ->addClass('project-view-home') 94 + ->addClass('project-view-people-home') 95 95 ->setMainColumn( 96 96 array( 97 97 $properties,
+4
src/applications/project/engine/PhabricatorProjectProfileMenuEngine.php
··· 21 21 $items = array(); 22 22 23 23 $items[] = $this->newItem() 24 + ->setBuiltinKey(PhabricatorProject::ITEM_PICTURE) 25 + ->setMenuItemKey(PhabricatorProjectPictureProfileMenuItem::MENUITEMKEY); 26 + 27 + $items[] = $this->newItem() 24 28 ->setBuiltinKey(PhabricatorProject::ITEM_PROFILE) 25 29 ->setMenuItemKey(PhabricatorProjectDetailsProfileMenuItem::MENUITEMKEY); 26 30
+2 -2
src/applications/project/menuitem/PhabricatorProjectDetailsProfileMenuItem.php
··· 46 46 $project = $config->getProfileObject(); 47 47 48 48 $id = $project->getID(); 49 - $picture = $project->getProfileImageURI(); 50 49 $name = $project->getName(); 50 + $icon = $project->getDisplayIconIcon(); 51 51 52 52 $href = "/project/profile/{$id}/"; 53 53 54 54 $item = $this->newItem() 55 55 ->setHref($href) 56 56 ->setName($name) 57 - ->setProfileImage($picture); 57 + ->setIcon($icon); 58 58 59 59 return array( 60 60 $item,
+69
src/applications/project/menuitem/PhabricatorProjectPictureProfileMenuItem.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectPictureProfileMenuItem 4 + extends PhabricatorProfileMenuItem { 5 + 6 + const MENUITEMKEY = 'project.picture'; 7 + 8 + public function getMenuItemTypeName() { 9 + return pht('Project Picture'); 10 + } 11 + 12 + private function getDefaultName() { 13 + return pht('Project Picture'); 14 + } 15 + 16 + public function canHideMenuItem( 17 + PhabricatorProfileMenuItemConfiguration $config) { 18 + return false; 19 + } 20 + 21 + public function getDisplayName( 22 + PhabricatorProfileMenuItemConfiguration $config) { 23 + return $this->getDefaultName(); 24 + } 25 + 26 + public function buildEditEngineFields( 27 + PhabricatorProfileMenuItemConfiguration $config) { 28 + return array(); 29 + } 30 + 31 + protected function newNavigationMenuItems( 32 + PhabricatorProfileMenuItemConfiguration $config) { 33 + 34 + $project = $config->getProfileObject(); 35 + require_celerity_resource('people-picture-menu-item-css'); 36 + 37 + $picture = $project->getProfileImageURI(); 38 + $href = $project->getProfileURI(); 39 + 40 + $classes = array(); 41 + $classes[] = 'people-menu-image'; 42 + if ($project->isArchived()) { 43 + $classes[] = 'phui-image-disabled'; 44 + } 45 + 46 + $photo = phutil_tag( 47 + 'img', 48 + array( 49 + 'src' => $picture, 50 + 'class' => implode(' ', $classes), 51 + )); 52 + 53 + $view = phutil_tag_div('people-menu-image-container', $photo); 54 + $view = phutil_tag( 55 + 'a', 56 + array( 57 + 'href' => $href, 58 + ), 59 + $view); 60 + 61 + $item = $this->newItem() 62 + ->appendChild($view); 63 + 64 + return array( 65 + $item, 66 + ); 67 + } 68 + 69 + }
+1
src/applications/project/storage/PhabricatorProject.php
··· 49 49 50 50 const TABLE_DATASOURCE_TOKEN = 'project_datasourcetoken'; 51 51 52 + const ITEM_PICTURE = 'project.picture'; 52 53 const ITEM_PROFILE = 'project.profile'; 53 54 const ITEM_POINTS = 'project.points'; 54 55 const ITEM_WORKBOARD = 'project.workboard';