@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<?php
2
3final class PhabricatorProjectMembersProfileMenuItem
4 extends PhabricatorProfileMenuItem {
5
6 const MENUITEMKEY = 'project.members';
7
8 public function getMenuItemTypeName() {
9 return pht('Project Members');
10 }
11
12 private function getDefaultName() {
13 return pht('Members');
14 }
15
16 public function getMenuItemTypeIcon() {
17 return 'fa-users';
18 }
19
20 public function getDisplayName(
21 PhabricatorProfileMenuItemConfiguration $config) {
22 $name = $config->getMenuItemProperty('name');
23
24 if (phutil_nonempty_string($name)) {
25 return $name;
26 }
27
28 return $this->getDefaultName();
29 }
30
31 public function buildEditEngineFields(
32 PhabricatorProfileMenuItemConfiguration $config) {
33 return array(
34 id(new PhabricatorTextEditField())
35 ->setKey('name')
36 ->setLabel(pht('Name'))
37 ->setPlaceholder($this->getDefaultName())
38 ->setValue($config->getMenuItemProperty('name')),
39 );
40 }
41
42 protected function newMenuItemViewList(
43 PhabricatorProfileMenuItemConfiguration $config) {
44
45 $project = $config->getProfileObject();
46
47 $id = $project->getID();
48
49 $name = $this->getDisplayName($config);
50 $icon = 'fa-group';
51 $uri = "/project/members/{$id}/";
52
53 $item = $this->newItemView()
54 ->setURI($uri)
55 ->setName($name)
56 ->setIcon($icon);
57
58 return array(
59 $item,
60 );
61 }
62
63}