[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorFlagSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getResultTypeDescription() { 7 return pht('Flags'); 8 } 9 10 public function getApplicationClassName() { 11 return 'PhabricatorFlagsApplication'; 12 } 13 14 public function buildSavedQueryFromRequest(AphrontRequest $request) { 15 $saved = new PhabricatorSavedQuery(); 16 $saved->setParameter('colors', $request->getArr('colors')); 17 $saved->setParameter('group', $request->getStr('group')); 18 $saved->setParameter('objectFilter', $request->getStr('objectFilter')); 19 return $saved; 20 } 21 22 public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { 23 $query = id(new PhabricatorFlagQuery()) 24 ->needHandles(true) 25 ->withOwnerPHIDs(array($this->requireViewer()->getPHID())); 26 27 $colors = $saved->getParameter('colors'); 28 if ($colors) { 29 $query->withColors($colors); 30 } 31 $group = $saved->getParameter('group'); 32 $options = $this->getGroupOptions(); 33 if ($group && isset($options[$group])) { 34 $query->setGroupBy($group); 35 } 36 37 $object_filter = $saved->getParameter('objectFilter'); 38 $objects = $this->getObjectFilterOptions(); 39 if ($object_filter && isset($objects[$object_filter])) { 40 $query->withTypes(array($object_filter)); 41 } 42 43 return $query; 44 } 45 46 public function buildSearchForm( 47 AphrontFormView $form, 48 PhabricatorSavedQuery $saved_query) { 49 50 $form 51 ->appendChild( 52 id(new PhabricatorFlagSelectControl()) 53 ->setName('colors') 54 ->setLabel(pht('Colors')) 55 ->setValue($saved_query->getParameter('colors', array()))) 56 ->appendChild( 57 id(new AphrontFormSelectControl()) 58 ->setName('group') 59 ->setLabel(pht('Group By')) 60 ->setValue($saved_query->getParameter('group')) 61 ->setOptions($this->getGroupOptions())) 62 ->appendChild( 63 id(new AphrontFormSelectControl()) 64 ->setName('objectFilter') 65 ->setLabel(pht('Object Type')) 66 ->setValue($saved_query->getParameter('objectFilter')) 67 ->setOptions($this->getObjectFilterOptions())); 68 } 69 70 protected function getURI($path) { 71 return '/flag/'.$path; 72 } 73 74 public function getBuiltinQueryNames() { 75 $names = array( 76 'all' => pht('Flagged'), 77 ); 78 79 return $names; 80 } 81 82 public function buildSavedQueryFromBuiltin($query_key) { 83 84 $query = $this->newSavedQuery(); 85 $query->setQueryKey($query_key); 86 87 switch ($query_key) { 88 case 'all': 89 return $query; 90 } 91 92 return parent::buildSavedQueryFromBuiltin($query_key); 93 } 94 95 private function getGroupOptions() { 96 return array( 97 PhabricatorFlagQuery::GROUP_NONE => pht('None'), 98 PhabricatorFlagQuery::GROUP_COLOR => pht('Color'), 99 ); 100 } 101 102 private function getObjectFilterOptions() { 103 $objects = id(new PhutilSymbolLoader()) 104 ->setAncestorClass('PhabricatorFlaggableInterface') 105 ->loadObjects(); 106 $all_types = PhabricatorPHIDType::getAllTypes(); 107 $options = array(); 108 foreach ($objects as $object) { 109 $phid = $object->generatePHID(); 110 $phid_type = phid_get_type($phid); 111 $type_object = idx($all_types, $phid_type); 112 if ($type_object) { 113 $options[$phid_type] = $type_object->getTypeName(); 114 } 115 } 116 // sort it alphabetically... 117 asort($options); 118 $default_option = array( 119 0 => pht('All Object Types'), 120 ); 121 // ...and stick the default option on front 122 $options = array_merge($default_option, $options); 123 124 return $options; 125 } 126 127 protected function renderResultList( 128 array $flags, 129 PhabricatorSavedQuery $query, 130 array $handles) { 131 assert_instances_of($flags, 'PhabricatorFlag'); 132 133 $viewer = $this->requireViewer(); 134 135 $list = id(new PHUIObjectItemListView()) 136 ->setUser($viewer); 137 foreach ($flags as $flag) { 138 $id = $flag->getID(); 139 $phid = $flag->getObjectPHID(); 140 141 $class = PhabricatorFlagColor::getCSSClass($flag->getColor()); 142 143 $flag_icon = phutil_tag( 144 'div', 145 array( 146 'class' => 'phabricator-flag-icon '.$class, 147 ), 148 ''); 149 150 $item = id(new PHUIObjectItemView()) 151 ->addHeadIcon($flag_icon) 152 ->setHeader($flag->getHandle()->renderLink()); 153 154 $item->addAction( 155 id(new PHUIListItemView()) 156 ->setIcon('fa-pencil') 157 ->setHref($this->getApplicationURI("edit/{$phid}/")) 158 ->setWorkflow(true)); 159 160 $item->addAction( 161 id(new PHUIListItemView()) 162 ->setIcon('fa-times') 163 ->setHref($this->getApplicationURI("delete/{$id}/")) 164 ->setWorkflow(true)); 165 166 if ($flag->getNote()) { 167 $item->addAttribute($flag->getNote()); 168 } 169 170 $item->addIcon( 171 'none', 172 phabricator_datetime($flag->getDateCreated(), $viewer)); 173 174 $list->addItem($item); 175 } 176 177 return $list; 178 } 179 180 181 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |