@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.

Added separation of flags according to ordering

Summary:
Refs T2841 - Exactly what it says on the tin

Turned some ordering around.

- Color is `ASC` to be in line with the flag dialog
- Object type is `DESC`, since `TASK` and `DREV` are sure more of
interest than `CMIT`

NOTE: May not work properly without D5514, since only a few
object handle types implement `getTypeName()` properly. The fallback
return value is `null`, after which we group when sorting per object
type. Dis gun b gud!

.

NOTE: Technically does not de-pend on D5517, though you may get a merge conflict. Prefer this one if you for some reason happen to push this one before D5517

Test Plan:
{F38202}
{F38203}
{F38204}

Reviewers: epriestley, btrahan

CC: aran, Korvin

Maniphest Tasks: T2841

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

Conflicts:

src/applications/flag/controller/PhabricatorFlagListController.php

authored by

Anh Nhan Nguyen and committed by
epriestley
7c9bd8bf 9ca8c8cd

+62 -12
+60 -10
src/applications/flag/controller/PhabricatorFlagListController.php
··· 5 5 public function processRequest() { 6 6 $request = $this->getRequest(); 7 7 $user = $request->getUser(); 8 + $flag_order = $request->getStr('o', 'n'); 8 9 9 10 $nav = new AphrontSideNavFilterView(); 10 11 $nav->setBaseURI(new PhutilURI('/flag/view/')); ··· 25 26 ->setName('o') 26 27 ->setLabel(pht('Sort Order')) 27 28 ->setBaseURI($request->getRequestURI(), 'o') 28 - ->setValue($request->getStr('o', 'n')) 29 + ->setValue($flag_order) 29 30 ->setButtons( 30 31 array( 31 32 'n' => pht('Date'), 32 33 'c' => pht('Color'), 33 34 'o' => pht('Object Type'), 34 - 'r' => pht('Reason'), 35 35 ))); 36 36 37 37 $filter = new AphrontListFilterView(); ··· 43 43 $query->setViewer($user); 44 44 $query->needHandles(true); 45 45 46 - switch ($request->getStr('o', 'n')) { 46 + switch ($flag_order) { 47 + // 'r' 48 + // 'a' 47 49 case 'n': 48 50 $order = PhabricatorFlagQuery::ORDER_ID; 49 51 break; ··· 53 55 case 'o': 54 56 $order = PhabricatorFlagQuery::ORDER_OBJECT; 55 57 break; 56 - case 'r': 57 - $order = PhabricatorFlagQuery::ORDER_REASON; 58 - break; 59 58 default: 60 59 throw new Exception("Unknown order!"); 61 60 } ··· 63 62 64 63 $flags = $query->execute(); 65 64 66 - $view = new PhabricatorFlagListView(); 67 - $view->setFlags($flags); 68 - $view->setUser($user); 65 + $views = array(); 66 + if ($flag_order == 'n') { 67 + $view = new PhabricatorFlagListView(); 68 + $view->setFlags($flags); 69 + $view->setUser($user); 70 + $view->setFlush(true); 71 + $views[] = array( 72 + 'view' => $view, 73 + ); 74 + } else { 75 + switch ($flag_order) { 76 + case 'c': 77 + $flags_tmp = mgroup($flags, 'getColor'); 78 + $flags = array(); 79 + foreach ($flags_tmp as $color => $flag_group) { 80 + $title = pht('%s Flags', 81 + PhabricatorFlagColor::getColorName($color)); 82 + $flags[$title] = $flag_group; 83 + } 84 + break; 85 + case 'o': 86 + $flags_tmp = mgroup($flags, 'getType'); 87 + $flags = array(); 88 + foreach ($flags_tmp as $color => $flag_group) { 89 + // Appending an 's' to fake plurals 90 + $title = head($flag_group)->getHandle()->getTypeName() . 's'; 91 + $flags[$title] = $flag_group; 92 + } 93 + break; 94 + default: 95 + throw new Exception("Unknown order!"); 96 + } 69 97 70 - $nav->appendChild($view); 98 + foreach ($flags as $group_title => $flag_group) { 99 + $view = new PhabricatorFlagListView(); 100 + $view->setFlags($flag_group); 101 + $view->setUser($user); 102 + $view->setFlush(true); 103 + $views[] = array( 104 + 'title' => pht('%s (%d)', $group_title, count($flag_group)), 105 + 'view' => $view, 106 + ); 107 + } 108 + } 109 + 110 + foreach ($views as $view) { 111 + $panel = new AphrontPanelView(); 112 + $panel->setNoBackground(); 113 + 114 + $title = idx($view, 'title'); 115 + if ($title) { 116 + $panel->setHeader($title); 117 + } 118 + $panel->appendChild($view['view']); 119 + $nav->appendChild($panel); 120 + } 71 121 72 122 return $this->buildApplicationPage( 73 123 $nav,
+2 -2
src/applications/flag/query/PhabricatorFlagQuery.php
··· 165 165 return 'id DESC'; 166 166 break; 167 167 case self::ORDER_COLOR: 168 - return 'color DESC'; 168 + return 'color ASC'; 169 169 break; 170 170 case self::ORDER_OBJECT: 171 - return 'type ASC'; 171 + return 'type DESC'; 172 172 break; 173 173 case self::ORDER_REASON: 174 174 return 'reasonPHID DESC';