[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/uiexample/examples/ -> PhabricatorUIPagerExample.php (source)

   1  <?php
   2  
   3  final class PhabricatorUIPagerExample extends PhabricatorUIExample {
   4  
   5    public function getName() {
   6      return 'Pager';
   7    }
   8  
   9    public function getDescription() {
  10      return hsprintf(
  11        'Use <tt>AphrontPagerView</tt> to create a control which allows '.
  12        'users to paginate through large amounts of content.');
  13    }
  14  
  15    public function renderExample() {
  16  
  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          'Item #'.($ii + 1),
  27        );
  28      }
  29  
  30      $table = new AphrontTableView($rows);
  31      $table->setHeaders(
  32        array(
  33          'Item',
  34        ));
  35      $panel = new AphrontPanelView();
  36      $panel->appendChild($table);
  37  
  38      $panel->appendChild(hsprintf(
  39        '<p class="phabricator-ui-example-note">'.
  40          'Use <tt>AphrontPagerView</tt> to render a pager element.'.
  41        '</p>'));
  42  
  43      $pager = new AphrontPagerView();
  44      $pager->setPageSize($page_size);
  45      $pager->setOffset($offset);
  46      $pager->setCount($item_count);
  47      $pager->setURI($request->getRequestURI(), 'offset');
  48      $panel->appendChild($pager);
  49  
  50      $panel->appendChild(hsprintf(
  51        '<p class="phabricator-ui-example-note">'.
  52          'You can show more or fewer pages of surrounding context.'.
  53        '</p>'));
  54  
  55      $many_pages_pager = new AphrontPagerView();
  56      $many_pages_pager->setPageSize($page_size);
  57      $many_pages_pager->setOffset($offset);
  58      $many_pages_pager->setCount($item_count);
  59      $many_pages_pager->setURI($request->getRequestURI(), 'offset');
  60      $many_pages_pager->setSurroundingPages(7);
  61      $panel->appendChild($many_pages_pager);
  62  
  63      $panel->appendChild(hsprintf(
  64        '<p class="phabricator-ui-example-note">'.
  65          'When it is prohibitively expensive or complex to attain a complete '.
  66          'count of the items, you can select one extra item and set '.
  67          '<tt>hasMorePages(true)</tt> if it exists, creating an inexact pager.'.
  68        '</p>'));
  69  
  70      $inexact_pager = new AphrontPagerView();
  71      $inexact_pager->setPageSize($page_size);
  72      $inexact_pager->setOffset($offset);
  73      $inexact_pager->setHasMorePages($offset < ($item_count - $page_size));
  74      $inexact_pager->setURI($request->getRequestURI(), 'offset');
  75      $panel->appendChild($inexact_pager);
  76  
  77      return $panel;
  78    }
  79  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1