@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 "group" to Maniphest "pro" search

Summary: This is the last missing filter.

Test Plan: Grouped results by a bunch of stuff.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

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

+36 -1
+36 -1
src/applications/maniphest/query/ManiphestTaskSearchEngine.php
··· 18 18 19 19 $saved->setParameter('statuses', $request->getArr('statuses')); 20 20 $saved->setParameter('priorities', $request->getArr('priorities')); 21 + $saved->setParameter('group', $request->getStr('group')); 21 22 $saved->setParameter('order', $request->getStr('order')); 22 23 23 24 $ids = $request->getStrList('ids'); ··· 93 94 $query->setOrderBy($order); 94 95 } else { 95 96 $query->setOrderBy(head($this->getOrderValues())); 97 + } 98 + 99 + $group = $saved->getParameter('group'); 100 + $group = idx($this->getGroupValues(), $group); 101 + if ($group) { 102 + $query->setGroupBy($group); 103 + } else { 104 + $query->setGroupBy(head($this->getGroupValues())); 96 105 } 97 106 98 107 $ids = $saved->getParameter('ids'); ··· 273 282 ->appendChild($priority_control) 274 283 ->appendChild( 275 284 id(new AphrontFormSelectControl()) 285 + ->setName('group') 286 + ->setLabel(pht('Group By')) 287 + ->setValue($saved->getParameter('group')) 288 + ->setOptions($this->getGroupOptions())) 289 + ->appendChild( 290 + id(new AphrontFormSelectControl()) 276 291 ->setName('order') 277 - ->setLabel(pht('Order')) 292 + ->setLabel(pht('Order By')) 278 293 ->setValue($saved->getParameter('order')) 279 294 ->setOptions($this->getOrderOptions())) 280 295 ->appendChild( ··· 355 370 'updated' => ManiphestTaskQuery::ORDER_MODIFIED, 356 371 'created' => ManiphestTaskQuery::ORDER_CREATED, 357 372 'title' => ManiphestTaskQuery::ORDER_TITLE, 373 + ); 374 + } 375 + 376 + private function getGroupOptions() { 377 + return array( 378 + 'priority' => pht('Priority'), 379 + 'assigned' => pht('Assigned'), 380 + 'status' => pht('Status'), 381 + 'project' => pht('Project'), 382 + 'none' => pht('None'), 383 + ); 384 + } 385 + 386 + private function getGroupValues() { 387 + return array( 388 + 'priority' => ManiphestTaskQuery::GROUP_PRIORITY, 389 + 'assigned' => ManiphestTaskQuery::GROUP_OWNER, 390 + 'status' => ManiphestTaskQuery::GROUP_STATUS, 391 + 'project' => ManiphestTaskQuery::GROUP_PROJECT, 392 + 'none' => ManiphestTaskQuery::GROUP_NONE, 358 393 ); 359 394 } 360 395