[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class LegalpadDocumentSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getResultTypeDescription() { 7 return pht('Legalpad Documents'); 8 } 9 10 public function getApplicationClassName() { 11 return 'PhabricatorLegalpadApplication'; 12 } 13 14 public function buildSavedQueryFromRequest(AphrontRequest $request) { 15 $saved = new PhabricatorSavedQuery(); 16 $saved->setParameter( 17 'creatorPHIDs', 18 $this->readUsersFromRequest($request, 'creators')); 19 20 $saved->setParameter( 21 'contributorPHIDs', 22 $this->readUsersFromRequest($request, 'contributors')); 23 24 $saved->setParameter( 25 'withViewerSignature', 26 $request->getBool('withViewerSignature')); 27 28 $saved->setParameter('createdStart', $request->getStr('createdStart')); 29 $saved->setParameter('createdEnd', $request->getStr('createdEnd')); 30 31 return $saved; 32 } 33 34 public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { 35 $query = id(new LegalpadDocumentQuery()) 36 ->needViewerSignatures(true); 37 38 $creator_phids = $saved->getParameter('creatorPHIDs', array()); 39 if ($creator_phids) { 40 $query->withCreatorPHIDs($creator_phids); 41 } 42 43 $contributor_phids = $saved->getParameter('contributorPHIDs', array()); 44 if ($contributor_phids) { 45 $query->withContributorPHIDs($contributor_phids); 46 } 47 48 if ($saved->getParameter('withViewerSignature')) { 49 $viewer_phid = $this->requireViewer()->getPHID(); 50 if ($viewer_phid) { 51 $query->withSignerPHIDs(array($viewer_phid)); 52 } 53 } 54 55 $start = $this->parseDateTime($saved->getParameter('createdStart')); 56 $end = $this->parseDateTime($saved->getParameter('createdEnd')); 57 58 if ($start) { 59 $query->withDateCreatedAfter($start); 60 } 61 62 if ($end) { 63 $query->withDateCreatedBefore($end); 64 } 65 66 return $query; 67 } 68 69 public function buildSearchForm( 70 AphrontFormView $form, 71 PhabricatorSavedQuery $saved_query) { 72 73 $creator_phids = $saved_query->getParameter('creatorPHIDs', array()); 74 $contributor_phids = $saved_query->getParameter( 75 'contributorPHIDs', array()); 76 $phids = array_merge($creator_phids, $contributor_phids); 77 $handles = id(new PhabricatorHandleQuery()) 78 ->setViewer($this->requireViewer()) 79 ->withPHIDs($phids) 80 ->execute(); 81 82 $viewer_signature = $saved_query->getParameter('withViewerSignature'); 83 if (!$this->requireViewer()->getPHID()) { 84 $viewer_signature = false; 85 } 86 87 $form 88 ->appendChild( 89 id(new AphrontFormCheckboxControl()) 90 ->addCheckbox( 91 'withViewerSignature', 92 1, 93 pht('Show only documents I have signed.'), 94 $viewer_signature) 95 ->setDisabled(!$this->requireViewer()->getPHID())) 96 ->appendChild( 97 id(new AphrontFormTokenizerControl()) 98 ->setDatasource(new PhabricatorPeopleDatasource()) 99 ->setName('creators') 100 ->setLabel(pht('Creators')) 101 ->setValue(array_select_keys($handles, $creator_phids))) 102 ->appendChild( 103 id(new AphrontFormTokenizerControl()) 104 ->setDatasource(new PhabricatorPeopleDatasource()) 105 ->setName('contributors') 106 ->setLabel(pht('Contributors')) 107 ->setValue(array_select_keys($handles, $contributor_phids))); 108 109 $this->buildDateRange( 110 $form, 111 $saved_query, 112 'createdStart', 113 pht('Created After'), 114 'createdEnd', 115 pht('Created Before')); 116 117 } 118 119 protected function getURI($path) { 120 return '/legalpad/'.$path; 121 } 122 123 public function getBuiltinQueryNames() { 124 $names = array(); 125 126 if ($this->requireViewer()->isLoggedIn()) { 127 $names['signed'] = pht('Signed Documents'); 128 } 129 130 $names['all'] = pht('All Documents'); 131 132 return $names; 133 } 134 135 public function buildSavedQueryFromBuiltin($query_key) { 136 $query = $this->newSavedQuery(); 137 $query->setQueryKey($query_key); 138 139 switch ($query_key) { 140 case 'signed': 141 return $query 142 ->setParameter('withViewerSignature', true); 143 case 'all': 144 return $query; 145 } 146 147 return parent::buildSavedQueryFromBuiltin($query_key); 148 } 149 150 protected function getRequiredHandlePHIDsForResultList( 151 array $documents, 152 PhabricatorSavedQuery $query) { 153 return array(); 154 } 155 156 protected function renderResultList( 157 array $documents, 158 PhabricatorSavedQuery $query, 159 array $handles) { 160 assert_instances_of($documents, 'LegalpadDocument'); 161 162 $viewer = $this->requireViewer(); 163 164 $list = new PHUIObjectItemListView(); 165 $list->setUser($viewer); 166 foreach ($documents as $document) { 167 $last_updated = phabricator_date($document->getDateModified(), $viewer); 168 169 $title = $document->getTitle(); 170 171 $type_name = $document->getSignatureTypeName(); 172 $type_icon = $document->getSignatureTypeIcon(); 173 174 $item = id(new PHUIObjectItemView()) 175 ->setObjectName($document->getMonogram()) 176 ->setHeader($title) 177 ->setHref('/'.$document->getMonogram()) 178 ->setObject($document) 179 ->addIcon($type_icon, $type_name) 180 ->addIcon( 181 'fa-pencil grey', 182 pht('Version %d (%s)', $document->getVersions(), $last_updated)); 183 184 if ($viewer->getPHID()) { 185 $signature = $document->getUserSignature($viewer->getPHID()); 186 } else { 187 $signature = null; 188 } 189 190 if ($signature) { 191 $item->addAttribute( 192 array( 193 id(new PHUIIconView())->setIconFont('fa-check-square-o', 'green'), 194 ' ', 195 pht( 196 'Signed on %s', 197 phabricator_date($signature->getDateCreated(), $viewer)), 198 )); 199 } else { 200 $item->addAttribute( 201 array( 202 id(new PHUIIconView())->setIconFont('fa-square-o', 'grey'), 203 ' ', 204 pht('Not Signed'), 205 )); 206 } 207 208 $list->addItem($item); 209 } 210 211 return $list; 212 } 213 214 }
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 |