@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
at upstream/main 221 lines 7.1 kB view raw
1<?php 2final class PHUITimelineExample extends PhabricatorUIExample { 3 4 public function getName() { 5 return pht('Timeline View'); 6 } 7 8 public function getDescription() { 9 return pht( 10 'Use %s to comments and transactions.', 11 hsprintf('<code>PHUITimelineView</code>')); 12 } 13 14 public function renderExample() { 15 $request = $this->getRequest(); 16 $user = $request->getUser(); 17 18 $handle = id(new PhabricatorHandleQuery()) 19 ->setViewer($user) 20 ->withPHIDs(array($user->getPHID())) 21 ->executeOne(); 22 23 $designer = id(new PHUIBadgeMiniView()) 24 ->setIcon('fa-camera-retro') 25 ->setHeader(pht('Designer')) 26 ->setQuality(PhabricatorBadgesQuality::EPIC); 27 28 $admin = id(new PHUIBadgeMiniView()) 29 ->setIcon('fa-user') 30 ->setHeader(pht('Administrator')) 31 ->setQuality(PhabricatorBadgesQuality::RARE); 32 33 $events = array(); 34 35 $events[] = id(new PHUITimelineEventView()) 36 ->setUserHandle($handle) 37 ->setTitle(pht('A major event.')) 38 ->appendChild(pht('This is a major timeline event.')) 39 ->addBadge($designer) 40 ->addBadge($admin); 41 42 $events[] = id(new PHUITimelineEventView()) 43 ->setUserHandle($handle) 44 ->setIcon('fa-heart') 45 ->setTitle(pht('A minor event.')); 46 47 $events[] = id(new PHUITimelineEventView()) 48 ->setUserHandle($handle) 49 ->setIcon('fa-comment') 50 ->appendChild(pht('A major event with no title.')); 51 52 $events[] = id(new PHUITimelineEventView()) 53 ->setUserHandle($handle) 54 ->setIcon('fa-star') 55 ->setTitle(pht('Another minor event.')); 56 57 $events[] = id(new PHUITimelineEventView()) 58 ->setUserHandle($handle) 59 ->setTitle(pht('Major Red Event')) 60 ->setIcon('fa-heart-o') 61 ->appendChild(pht('This event is red!')) 62 ->setColor(PhabricatorTransactions::COLOR_RED) 63 ->addBadge($designer); 64 65 $events[] = id(new PHUITimelineEventView()) 66 ->setUserHandle($handle) 67 ->setIcon('fa-female') 68 ->setTitle(pht('Minor Red Event')) 69 ->setColor(PhabricatorTransactions::COLOR_RED); 70 71 $events[] = id(new PHUITimelineEventView()) 72 ->setIcon('fa-refresh') 73 ->setUserHandle($handle) 74 ->setTitle(pht('Minor Not-Red Event')) 75 ->setColor(PhabricatorTransactions::COLOR_GREEN); 76 77 $events[] = id(new PHUITimelineEventView()) 78 ->setUserHandle($handle) 79 ->setIcon('fa-calendar-o') 80 ->setTitle(pht('Minor Red Event')) 81 ->setColor(PhabricatorTransactions::COLOR_RED); 82 83 // Pinboard!! 84 $pin1 = id(new PHUIPinboardItemView()) 85 ->setViewer($user) 86 ->setHeader('user0.png') 87 ->setImageURI(celerity_get_resource_uri('/rsrc/image/people/user0.png')) 88 ->setURI(celerity_get_resource_uri('/rsrc/image/people/user0.png')) 89 ->setImageSize(280, 210); 90 91 $pin2 = id(new PHUIPinboardItemView()) 92 ->setViewer($user) 93 ->setHeader('user1.png') 94 ->setImageURI(celerity_get_resource_uri('/rsrc/image/people/user1.png')) 95 ->setURI(celerity_get_resource_uri('/rsrc/image/people/user1.png')) 96 ->setImageSize(280, 210); 97 98 $pin3 = id(new PHUIPinboardItemView()) 99 ->setViewer($user) 100 ->setHeader('user2.png') 101 ->setImageURI(celerity_get_resource_uri('/rsrc/image/people/user2.png')) 102 ->setURI(celerity_get_resource_uri('/rsrc/image/people/user1.png')) 103 ->setImageSize(280, 210); 104 105 $events[] = id(new PHUITimelineEventView()) 106 ->setUserHandle($handle) 107 ->setIcon('fa-camera-retro') 108 ->setTitle(pht('Pinboard Image Event')) 109 ->addPinboardItem($pin1) 110 ->addPinboardItem($pin2) 111 ->addPinboardItem($pin3); 112 113 $events[] = id(new PHUITimelineEventView()) 114 ->setUserHandle($handle) 115 ->setIcon('fa-circle-o') 116 ->setTitle(pht('Major Green Disagreement Action')) 117 ->appendChild(pht('This event is green!')) 118 ->setColor(PhabricatorTransactions::COLOR_GREEN); 119 120 $events[] = id(new PHUITimelineEventView()) 121 ->setUserHandle($handle) 122 ->setIcon('fa-tag') 123 ->setTitle(str_repeat(pht('Long Text Title').' ', 64)) 124 ->appendChild(str_repeat(pht('Long Text Body').' ', 64)) 125 ->setColor(PhabricatorTransactions::COLOR_ORANGE); 126 127 $colors = array( 128 PhabricatorTransactions::COLOR_RED, 129 PhabricatorTransactions::COLOR_ORANGE, 130 PhabricatorTransactions::COLOR_YELLOW, 131 PhabricatorTransactions::COLOR_GREEN, 132 PhabricatorTransactions::COLOR_SKY, 133 PhabricatorTransactions::COLOR_BLUE, 134 PhabricatorTransactions::COLOR_INDIGO, 135 PhabricatorTransactions::COLOR_VIOLET, 136 PhabricatorTransactions::COLOR_GREY, 137 PhabricatorTransactions::COLOR_BLACK, 138 ); 139 140 $events[] = id(new PHUITimelineEventView()) 141 ->setUserHandle($handle) 142 ->setTitle(pht('Colorless')) 143 ->setIcon('fa-lock'); 144 145 foreach ($colors as $color) { 146 $events[] = id(new PHUITimelineEventView()) 147 ->setUserHandle($handle) 148 ->setTitle(pht("Color '%s'", $color)) 149 ->setIcon('fa-paw') 150 ->setColor($color); 151 } 152 153 $vhandle = $handle->renderLink(); 154 155 $group_event = id(new PHUITimelineEventView()) 156 ->setUserHandle($handle) 157 ->setTitle(pht('%s went to the store.', $vhandle)); 158 159 $group_event->addEventToGroup( 160 id(new PHUITimelineEventView()) 161 ->setUserHandle($handle) 162 ->setTitle(pht('%s bought an apple.', $vhandle)) 163 ->setColor('green') 164 ->setIcon('fa-apple')); 165 166 $group_event->addEventToGroup( 167 id(new PHUITimelineEventView()) 168 ->setUserHandle($handle) 169 ->setTitle(pht('%s bought a banana.', $vhandle)) 170 ->setColor('yellow') 171 ->setIcon('fa-check')); 172 173 $group_event->addEventToGroup( 174 id(new PHUITimelineEventView()) 175 ->setUserHandle($handle) 176 ->setTitle(pht('%s bought a cherry.', $vhandle)) 177 ->setColor('red') 178 ->setIcon('fa-check')); 179 180 $group_event->addEventToGroup( 181 id(new PHUITimelineEventView()) 182 ->setUserHandle($handle) 183 ->setTitle(pht('%s paid for his goods.', $vhandle))); 184 185 $group_event->addEventToGroup( 186 id(new PHUITimelineEventView()) 187 ->setUserHandle($handle) 188 ->setTitle(pht('%s returned home.', $vhandle)) 189 ->setIcon('fa-home') 190 ->setColor('blue')); 191 192 $group_event->addEventToGroup( 193 id(new PHUITimelineEventView()) 194 ->setUserHandle($handle) 195 ->setTitle(pht('%s related on his adventures.', $vhandle)) 196 ->appendChild( 197 pht( 198 'Today, I went to the store. I bought an apple. I bought a '. 199 'banana. I bought a cherry. I paid for my goods, then I returned '. 200 'home.'))); 201 202 $events[] = $group_event; 203 204 $anchor = 0; 205 foreach ($events as $group) { 206 foreach ($group->getEventGroup() as $event) { 207 $event->setViewer($user); 208 $event->setDateCreated(time() + ($anchor * 60 * 8)); 209 $event->setAnchor(++$anchor); 210 } 211 } 212 213 $timeline = new PHUITimelineView(); 214 $timeline->setViewer($user); 215 foreach ($events as $event) { 216 $timeline->addEvent($event); 217 } 218 219 return $timeline; 220 } 221}