@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 90 lines 2.8 kB view raw
1<?php 2 3final class PhabricatorPagerUIExample extends PhabricatorUIExample { 4 5 public function getName() { 6 return pht('Pager'); 7 } 8 9 public function getDescription() { 10 return pht( 11 'Use %s to create a control which allows '. 12 'users to paginate through large amounts of content.', 13 phutil_tag('tt', array(), 'PHUIPagerView')); 14 } 15 16 public function renderExample() { 17 $request = $this->getRequest(); 18 19 $offset = (int)$request->getInt('offset'); 20 $page_size = 20; 21 $item_count = 173; 22 23 $rows = array(); 24 for ($ii = $offset; $ii < min($item_count, $offset + $page_size); $ii++) { 25 $rows[] = array( 26 pht('Item #%d', $ii + 1), 27 ); 28 } 29 30 $table = new AphrontTableView($rows); 31 $table->setHeaders( 32 array( 33 'Item', 34 )); 35 $panel = new PHUIObjectBoxView(); 36 $panel->setHeaderText(pht('Example')); 37 $panel->appendChild($table); 38 39 $panel->appendChild( 40 id(new PHUIInfoView()) 41 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) 42 ->setErrors(array( 43 pht( 44 'Use %s to render a pager element.', 45 phutil_tag('tt', array(), 'PHUIPagerView')), 46 ))); 47 48 $pager = new PHUIPagerView(); 49 $pager->setPageSize($page_size); 50 $pager->setOffset($offset); 51 $pager->setCount($item_count); 52 $pager->setURI($request->getRequestURI(), 'offset'); 53 $panel->appendChild($pager); 54 55 $panel->appendChild( 56 id(new PHUIInfoView()) 57 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) 58 ->setErrors(array( 59 pht('You can show more or fewer pages of surrounding context.'), 60 ))); 61 62 $many_pages_pager = new PHUIPagerView(); 63 $many_pages_pager->setPageSize($page_size); 64 $many_pages_pager->setOffset($offset); 65 $many_pages_pager->setCount($item_count); 66 $many_pages_pager->setURI($request->getRequestURI(), 'offset'); 67 $many_pages_pager->setSurroundingPages(7); 68 $panel->appendChild($many_pages_pager); 69 70 $panel->appendChild( 71 id(new PHUIInfoView()) 72 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) 73 ->setErrors(array( 74 pht( 75 'When it is prohibitively expensive or complex to attain a '. 76 'complete count of the items, you can select one extra item and '. 77 'set %s if it exists, creating an inexact pager.', 78 phutil_tag('tt', array(), 'hasMorePages(true)')), 79 ))); 80 81 $inexact_pager = new PHUIPagerView(); 82 $inexact_pager->setPageSize($page_size); 83 $inexact_pager->setOffset($offset); 84 $inexact_pager->setHasMorePages($offset < ($item_count - $page_size)); 85 $inexact_pager->setURI($request->getRequestURI(), 'offset'); 86 $panel->appendChild($inexact_pager); 87 88 return $panel; 89 } 90}