@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 PHUIHovercardUIExample extends PhabricatorUIExample {
4
5 public function getName() {
6 return pht('Hovercard');
7 }
8
9 public function getDescription() {
10 return pht(
11 'Use %s to render hovercards.',
12 phutil_tag('tt', array(), 'PHUIHovercardView'));
13 }
14
15 public function getCategory() {
16 return pht('Single Use');
17 }
18
19 public function renderExample() {
20 $request = $this->getRequest();
21 $user = $request->getUser();
22
23 $elements = array();
24
25 $diff_handle = $this->createBasicDummyHandle(
26 'D123',
27 DifferentialRevisionPHIDType::TYPECONST,
28 pht('Introduce cooler Differential Revisions'));
29
30 $panel = $this->createPanel(pht('Differential Hovercard'));
31 $panel->appendChild(id(new PHUIHovercardView())
32 ->setObjectHandle($diff_handle)
33 ->addField(pht('Author'), $user->getUsername())
34 ->addField(pht('Updated'), phabricator_datetime(time(), $user))
35 ->addAction(pht('Subscribe'), '/dev/random')
36 ->setUser($user));
37 $elements[] = $panel;
38
39 $task_handle = $this->createBasicDummyHandle(
40 'T123',
41 ManiphestTaskPHIDType::TYPECONST,
42 pht('Improve Mobile Experience'));
43
44 $tag = id(new PHUITagView())
45 ->setType(PHUITagView::TYPE_STATE)
46 ->setName(pht('Closed, Resolved'));
47 $panel = $this->createPanel(pht('Maniphest Hovercard'));
48 $panel->appendChild(id(new PHUIHovercardView())
49 ->setObjectHandle($task_handle)
50 ->setUser($user)
51 ->addField(pht('Assigned to'), $user->getUsername())
52 ->addField(pht('Dependent Tasks'), 'T123, T124, T125')
53 ->addAction(pht('Subscribe'), '/dev/random')
54 ->addAction(pht('Create Subtask'), '/dev/urandom')
55 ->addTag($tag));
56 $elements[] = $panel;
57
58 $user_handle = $this->createBasicDummyHandle(
59 'gwashington',
60 PhabricatorPeopleUserPHIDType::TYPECONST,
61 'George Washington');
62 $user_handle->setImageURI(
63 celerity_get_resource_uri('/rsrc/image/people/washington.png'));
64 $panel = $this->createPanel(pht('Whatevery Hovercard'));
65 $panel->appendChild(id(new PHUIHovercardView())
66 ->setObjectHandle($user_handle)
67 ->addField(pht('Status'), pht('Available'))
68 ->addField(pht('Member since'), '30. February 1750')
69 ->addAction(pht('Send a Message'), '/dev/null')
70 ->setUser($user));
71 $elements[] = $panel;
72
73 return phutil_implode_html('', $elements);
74 }
75
76 private function createPanel($header) {
77 $panel = new PHUIBoxView();
78 $panel->addClass('grouped');
79 $panel->addClass('ml');
80 return $panel;
81 }
82
83}