@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.

AphrontPagerView and UIExamples.

+590 -18
+36 -18
src/__celerity_resource_map__.php
··· 61 61 ), 62 62 'disk' => '/rsrc/css/aphront/headsup-action-list-view.css', 63 63 ), 64 + 'aphront-pager-view-css' => 65 + array( 66 + 'uri' => '/res/73ec8cd5/rsrc/css/aphront/pager-view.css', 67 + 'type' => 'css', 68 + 'requires' => 69 + array( 70 + ), 71 + 'disk' => '/rsrc/css/aphront/pager-view.css', 72 + ), 64 73 'aphront-panel-view-css' => 65 74 array( 66 75 'uri' => '/res/63672373/rsrc/css/aphront/panel-view.css', ··· 90 99 ), 91 100 'aphront-table-view-css' => 92 101 array( 93 - 'uri' => '/res/7bf17fb8/rsrc/css/aphront/table-view.css', 102 + 'uri' => '/res/03724b05/rsrc/css/aphront/table-view.css', 94 103 'type' => 'css', 95 104 'requires' => 96 105 array( ··· 288 297 ), 289 298 'disk' => '/rsrc/css/application/people/profile.css', 290 299 ), 300 + 'phabricator-ui-example-css' => 301 + array( 302 + 'uri' => '/res/b2593f53/rsrc/css/application/uiexample/example.css', 303 + 'type' => 'css', 304 + 'requires' => 305 + array( 306 + ), 307 + 'disk' => '/rsrc/css/application/uiexample/example.css', 308 + ), 291 309 'phabricator-core-buttons-css' => 292 310 array( 293 311 'uri' => '/res/53b4f712/rsrc/css/core/buttons.css', ··· 455 473 ), 456 474 'javelin-behavior-diffusion-pull-lastmodified' => 457 475 array( 458 - 'uri' => '/res/1c95a58e/rsrc/js/application/diffusion/behavior-pull-lastmodified.js', 476 + 'uri' => '/res/6a5e7374/rsrc/js/application/diffusion/behavior-pull-lastmodified.js', 459 477 'type' => 'js', 460 478 'requires' => 461 479 array( ··· 571 589 ), array ( 572 590 'packages' => 573 591 array ( 574 - 'aa9bbfd1' => 592 + '930fd839' => 575 593 array ( 576 594 'name' => 'core.pkg.css', 577 595 'symbols' => ··· 591 609 12 => 'phabricator-remarkup-css', 592 610 13 => 'syntax-highlighting-css', 593 611 ), 594 - 'uri' => '/res/pkg/aa9bbfd1/core.pkg.css', 612 + 'uri' => '/res/pkg/930fd839/core.pkg.css', 595 613 'type' => 'css', 596 614 ), 597 615 '76f3c1f8' => ··· 638 656 ), 639 657 'reverse' => 640 658 array ( 641 - 'phabricator-core-css' => 'aa9bbfd1', 642 - 'phabricator-core-buttons-css' => 'aa9bbfd1', 643 - 'phabricator-standard-page-view' => 'aa9bbfd1', 644 - 'aphront-dialog-view-css' => 'aa9bbfd1', 645 - 'aphront-form-view-css' => 'aa9bbfd1', 646 - 'aphront-panel-view-css' => 'aa9bbfd1', 647 - 'aphront-side-nav-view-css' => 'aa9bbfd1', 648 - 'aphront-table-view-css' => 'aa9bbfd1', 649 - 'aphront-crumbs-view-css' => 'aa9bbfd1', 650 - 'aphront-tokenizer-control-css' => 'aa9bbfd1', 651 - 'aphront-typeahead-control-css' => 'aa9bbfd1', 652 - 'phabricator-directory-css' => 'aa9bbfd1', 653 - 'phabricator-remarkup-css' => 'aa9bbfd1', 654 - 'syntax-highlighting-css' => 'aa9bbfd1', 659 + 'phabricator-core-css' => '930fd839', 660 + 'phabricator-core-buttons-css' => '930fd839', 661 + 'phabricator-standard-page-view' => '930fd839', 662 + 'aphront-dialog-view-css' => '930fd839', 663 + 'aphront-form-view-css' => '930fd839', 664 + 'aphront-panel-view-css' => '930fd839', 665 + 'aphront-side-nav-view-css' => '930fd839', 666 + 'aphront-table-view-css' => '930fd839', 667 + 'aphront-crumbs-view-css' => '930fd839', 668 + 'aphront-tokenizer-control-css' => '930fd839', 669 + 'aphront-typeahead-control-css' => '930fd839', 670 + 'phabricator-directory-css' => '930fd839', 671 + 'phabricator-remarkup-css' => '930fd839', 672 + 'syntax-highlighting-css' => '930fd839', 655 673 'differential-core-view-css' => '76f3c1f8', 656 674 'differential-changeset-view-css' => '76f3c1f8', 657 675 'differential-revision-detail-css' => '76f3c1f8',
+9
src/__phutil_library_map__.php
··· 41 41 'AphrontMySQLDatabaseConnection' => 'storage/connection/mysql', 42 42 'AphrontNullView' => 'view/null', 43 43 'AphrontPageView' => 'view/page/base', 44 + 'AphrontPagerView' => 'view/control/pager', 44 45 'AphrontPanelView' => 'view/layout/panel', 45 46 'AphrontQueryConnectionException' => 'storage/exception/connection', 46 47 'AphrontQueryConnectionLostException' => 'storage/exception/connectionlost', ··· 385 386 'PhabricatorTimelineIterator' => 'infrastructure/daemon/timeline/cursor/iterator', 386 387 'PhabricatorTypeaheadCommonDatasourceController' => 'applications/typeahead/controller/common', 387 388 'PhabricatorTypeaheadDatasourceController' => 'applications/typeahead/controller/base', 389 + 'PhabricatorUIExample' => 'applications/uiexample/examples/base', 390 + 'PhabricatorUIExampleController' => 'applications/uiexample/controller/base', 391 + 'PhabricatorUIExampleRenderController' => 'applications/uiexample/controller/render', 392 + 'PhabricatorUIPagerExample' => 'applications/uiexample/examples/pager', 388 393 'PhabricatorUser' => 'applications/people/storage/user', 389 394 'PhabricatorUserDAO' => 'applications/people/storage/base', 390 395 'PhabricatorUserOAuthInfo' => 'applications/people/storage/useroauthinfo', ··· 453 458 'AphrontMySQLDatabaseConnection' => 'AphrontDatabaseConnection', 454 459 'AphrontNullView' => 'AphrontView', 455 460 'AphrontPageView' => 'AphrontView', 461 + 'AphrontPagerView' => 'AphrontView', 456 462 'AphrontPanelView' => 'AphrontView', 457 463 'AphrontQueryConnectionException' => 'AphrontQueryException', 458 464 'AphrontQueryConnectionLostException' => 'AphrontQueryRecoverableException', ··· 714 720 'PhabricatorTimelineEventData' => 'PhabricatorTimelineDAO', 715 721 'PhabricatorTypeaheadCommonDatasourceController' => 'PhabricatorTypeaheadDatasourceController', 716 722 'PhabricatorTypeaheadDatasourceController' => 'PhabricatorController', 723 + 'PhabricatorUIExampleController' => 'PhabricatorController', 724 + 'PhabricatorUIExampleRenderController' => 'PhabricatorUIExampleController', 725 + 'PhabricatorUIPagerExample' => 'PhabricatorUIExample', 717 726 'PhabricatorUser' => 'PhabricatorUserDAO', 718 727 'PhabricatorUserDAO' => 'PhabricatorLiskDAO', 719 728 'PhabricatorUserOAuthInfo' => 'PhabricatorUserDAO',
+6
src/aphront/default/configuration/AphrontDefaultApplicationConfiguration.php
··· 245 245 '/preferences/' => array( 246 246 '$' => 'PhabricatorEditPreferencesController' 247 247 ), 248 + 249 + '/uiexample/' => array( 250 + '$' => 'PhabricatorUIExampleRenderController', 251 + 'view/(?P<class>[^/]+)/$' => 'PhabricatorUIExampleRenderController', 252 + ), 253 + 248 254 ); 249 255 } 250 256
+34
src/applications/uiexample/controller/base/PhabricatorUIExampleController.php
··· 1 + <?php 2 + 3 + /* 4 + * Copyright 2011 Facebook, Inc. 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + */ 18 + 19 + abstract class PhabricatorUIExampleController extends PhabricatorController { 20 + 21 + public function buildStandardPageResponse($view, array $data) { 22 + $page = $this->buildStandardPageView(); 23 + 24 + $page->setApplicationName('UI Examples'); 25 + $page->setBaseURI('/uiexample/'); 26 + $page->setTitle(idx($data, 'title')); 27 + $page->setGlyph("\xE2\x8F\x9A"); 28 + $page->appendChild($view); 29 + 30 + $response = new AphrontWebpageResponse(); 31 + return $response->setContent($page->render()); 32 + } 33 + 34 + }
+15
src/applications/uiexample/controller/base/__init__.php
··· 1 + <?php 2 + /** 3 + * This file is automatically generated. Lint this module to rebuild it. 4 + * @generated 5 + */ 6 + 7 + 8 + 9 + phutil_require_module('phabricator', 'aphront/response/webpage'); 10 + phutil_require_module('phabricator', 'applications/base/controller/base'); 11 + 12 + phutil_require_module('phutil', 'utils'); 13 + 14 + 15 + phutil_require_source('PhabricatorUIExampleController.php');
+91
src/applications/uiexample/controller/render/PhabricatorUIExampleRenderController.php
··· 1 + <?php 2 + 3 + /* 4 + * Copyright 2011 Facebook, Inc. 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + */ 18 + 19 + class PhabricatorUIExampleRenderController 20 + extends PhabricatorUIExampleController { 21 + 22 + private $class; 23 + 24 + public function willProcessRequest(array $data) { 25 + $this->class = idx($data, 'class'); 26 + } 27 + 28 + public function processRequest() { 29 + 30 + $classes = id(new PhutilSymbolLoader()) 31 + ->setAncestorClass('PhabricatorUIExample') 32 + ->selectAndLoadSymbols(); 33 + $classes = ipull($classes, 'name', 'name'); 34 + 35 + $selected = null; 36 + foreach ($classes as $class => $ignored) { 37 + $classes[$class] = newv($class, array()); 38 + if ($this->class == $class) { 39 + $selected = $class; 40 + } 41 + } 42 + 43 + if (!$selected) { 44 + reset($classes); 45 + $selected = key($classes); 46 + } 47 + 48 + $nav = new AphrontSideNavView(); 49 + 50 + foreach ($classes as $class => $obj) { 51 + $name = $obj->getName(); 52 + 53 + $nav->addNavItem( 54 + phutil_render_tag( 55 + 'a', 56 + array( 57 + 'href' => '/uiexample/view/'.$name.'/', 58 + 'class' => ($selected == $class) 59 + ? 'aphront-side-nav-selected' 60 + : null, 61 + ), 62 + phutil_escape_html($obj->getName()))); 63 + } 64 + 65 + require_celerity_resource('phabricator-ui-example-css'); 66 + 67 + $example = $classes[$selected]; 68 + $example->setRequest($this->getRequest()); 69 + 70 + 71 + $nav->appendChild( 72 + '<div class="phabricator-ui-example-header">'. 73 + '<h1 class="phabricator-ui-example-name">'. 74 + phutil_escape_html($example->getName()). 75 + ' ('.get_class($example).')'. 76 + '</h1>'. 77 + '<p class="phabricator-ui-example-description">' 78 + .$example->getDescription(). 79 + '</p>'. 80 + '</div>'); 81 + 82 + $nav->appendChild($example->renderExample()); 83 + 84 + return $this->buildStandardPageResponse( 85 + $nav, 86 + array( 87 + 'title' => 'UI Example', 88 + )); 89 + } 90 + 91 + }
+18
src/applications/uiexample/controller/render/__init__.php
··· 1 + <?php 2 + /** 3 + * This file is automatically generated. Lint this module to rebuild it. 4 + * @generated 5 + */ 6 + 7 + 8 + 9 + phutil_require_module('phabricator', 'applications/uiexample/controller/base'); 10 + phutil_require_module('phabricator', 'infrastructure/celerity/api'); 11 + phutil_require_module('phabricator', 'view/layout/sidenav'); 12 + 13 + phutil_require_module('phutil', 'markup'); 14 + phutil_require_module('phutil', 'symbols'); 15 + phutil_require_module('phutil', 'utils'); 16 + 17 + 18 + phutil_require_source('PhabricatorUIExampleRenderController.php');
+36
src/applications/uiexample/examples/base/PhabricatorUIExample.php
··· 1 + <?php 2 + 3 + /* 4 + * Copyright 2011 Facebook, Inc. 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + */ 18 + 19 + abstract class PhabricatorUIExample { 20 + 21 + private $request; 22 + 23 + public function setRequest($request) { 24 + $this->request = $request; 25 + return $this; 26 + } 27 + 28 + public function getRequest() { 29 + return $this->request; 30 + } 31 + 32 + abstract public function getName(); 33 + abstract public function getDescription(); 34 + abstract public function renderExample(); 35 + 36 + }
+10
src/applications/uiexample/examples/base/__init__.php
··· 1 + <?php 2 + /** 3 + * This file is automatically generated. Lint this module to rebuild it. 4 + * @generated 5 + */ 6 + 7 + 8 + 9 + 10 + phutil_require_source('PhabricatorUIExample.php');
+94
src/applications/uiexample/examples/pager/PhabricatorUIPagerExample.php
··· 1 + <?php 2 + 3 + /* 4 + * Copyright 2011 Facebook, Inc. 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + */ 18 + 19 + class PhabricatorUIPagerExample extends PhabricatorUIExample { 20 + 21 + public function getName() { 22 + return 'Pager'; 23 + } 24 + 25 + public function getDescription() { 26 + return 'Use <tt>AphrontPagerView</tt> to create a control which allows '. 27 + 'users to paginate through large amounts of content.'; 28 + } 29 + 30 + public function renderExample() { 31 + 32 + $request = $this->getRequest(); 33 + 34 + $offset = (int)$request->getInt('offset'); 35 + $page_size = 20; 36 + $item_count = 173; 37 + 38 + $rows = array(); 39 + for ($ii = $offset; $ii < min($item_count, $offset + $page_size); $ii++) { 40 + $rows[] = array( 41 + 'Item #'.($ii + 1), 42 + ); 43 + } 44 + 45 + $table = new AphrontTableView($rows); 46 + $table->setHeaders( 47 + array( 48 + 'Item', 49 + )); 50 + $panel = new AphrontPanelView(); 51 + $panel->appendChild($table); 52 + 53 + $panel->appendChild( 54 + '<p class="phabricator-ui-example-note">'. 55 + 'Use <tt>AphrontPagerView</tt> to render a pager element.'. 56 + '</p>'); 57 + 58 + $pager = new AphrontPagerView(); 59 + $pager->setPageSize($page_size); 60 + $pager->setOffset($offset); 61 + $pager->setCount($item_count); 62 + $pager->setURI($request->getRequestURI(), 'offset'); 63 + $panel->appendChild($pager); 64 + 65 + $panel->appendChild( 66 + '<p class="phabricator-ui-example-note">'. 67 + 'You can show more or fewer pages of surrounding context.'. 68 + '</p>'); 69 + 70 + $many_pages_pager = new AphrontPagerView(); 71 + $many_pages_pager->setPageSize($page_size); 72 + $many_pages_pager->setOffset($offset); 73 + $many_pages_pager->setCount($item_count); 74 + $many_pages_pager->setURI($request->getRequestURI(), 'offset'); 75 + $many_pages_pager->setSurroundingPages(7); 76 + $panel->appendChild($many_pages_pager); 77 + 78 + $panel->appendChild( 79 + '<p class="phabricator-ui-example-note">'. 80 + 'When it is prohibitively expensive or complex to attain a complete '. 81 + 'count of the items, you can select one extra item and set '. 82 + '<tt>hasMorePages(true)</tt> if it exists, creating an inexact pager.'. 83 + '</p>'); 84 + 85 + $inexact_pager = new AphrontPagerView(); 86 + $inexact_pager->setPageSize($page_size); 87 + $inexact_pager->setOffset($offset); 88 + $inexact_pager->setHasMorePages($offset < ($item_count - $page_size)); 89 + $inexact_pager->setURI($request->getRequestURI(), 'offset'); 90 + $panel->appendChild($inexact_pager); 91 + 92 + return $panel; 93 + } 94 + }
+15
src/applications/uiexample/examples/pager/__init__.php
··· 1 + <?php 2 + /** 3 + * This file is automatically generated. Lint this module to rebuild it. 4 + * @generated 5 + */ 6 + 7 + 8 + 9 + phutil_require_module('phabricator', 'applications/uiexample/examples/base'); 10 + phutil_require_module('phabricator', 'view/control/pager'); 11 + phutil_require_module('phabricator', 'view/control/table'); 12 + phutil_require_module('phabricator', 'view/layout/panel'); 13 + 14 + 15 + phutil_require_source('PhabricatorUIPagerExample.php');
+171
src/view/control/pager/AphrontPagerView.php
··· 1 + <?php 2 + 3 + /* 4 + * Copyright 2011 Facebook, Inc. 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + */ 18 + 19 + final class AphrontPagerView extends AphrontView { 20 + 21 + private $offset; 22 + private $pageSize; 23 + 24 + private $count; 25 + private $hasMorePages; 26 + 27 + private $uri; 28 + private $pagingParameter; 29 + private $surroundingPages = 2; 30 + 31 + final public function setPageSize($page_size) { 32 + $this->pageSize = max(1, $page_size); 33 + return $this; 34 + } 35 + 36 + final public function setOffset($offset) { 37 + $this->offset = max(0, $offset); 38 + return $this; 39 + } 40 + 41 + final public function getOffset() { 42 + return $this->offset; 43 + } 44 + 45 + final public function getPageSize() { 46 + return $this->pageSize; 47 + } 48 + 49 + final public function setCount($count) { 50 + $this->count = $count; 51 + return $this; 52 + } 53 + 54 + final public function setHasMorePages($has_more) { 55 + $this->hasMorePages = $has_more; 56 + return $this; 57 + } 58 + 59 + final public function setURI(PhutilURI $uri, $paging_parameter) { 60 + $this->uri = $uri; 61 + $this->pagingParameter = $paging_parameter; 62 + return $this; 63 + } 64 + 65 + final public function setSurroundingPages($pages) { 66 + $this->surroundingPages = max(0, $pages); 67 + return $this; 68 + } 69 + 70 + private function computeCount() { 71 + if ($this->count !== null) { 72 + return $this->count; 73 + } 74 + return $this->getOffset() 75 + + $this->getPageSize() 76 + + ($this->hasMorePages ? 1 : 0); 77 + } 78 + 79 + private function isExactCountKnown() { 80 + return $this->count !== null; 81 + } 82 + 83 + public function render() { 84 + 85 + require_celerity_resource('aphront-pager-view-css'); 86 + 87 + $page = (int)floor($this->getOffset() / $this->getPageSize()); 88 + $last = ((int)ceil($this->computeCount() / $this->getPageSize())) - 1; 89 + $near = $this->surroundingPages; 90 + 91 + $min = $page - $near; 92 + $max = $page + $near; 93 + 94 + // Limit the window size to no larger than the number of available pages. 95 + if ($max - $min > $last) { 96 + $max = $min + $last; 97 + if ($max == $min) { 98 + return '<div class="aphront-pager-view"></div>'; 99 + } 100 + } 101 + 102 + // Slide the window so it is entirely over displayable pages. 103 + if ($min < 0) { 104 + $max += 0 - $min; 105 + $min += 0 - $min; 106 + } 107 + 108 + if ($max > $last) { 109 + $min -= $max - $last; 110 + $max -= $max - $last; 111 + } 112 + 113 + 114 + // Build up a list of <index, label, css-class> tuples which describe the 115 + // links we'll display, then render them all at once. 116 + 117 + $links = array(); 118 + 119 + if ($min > 0) { 120 + $links[] = array(0, 'First', null); 121 + } 122 + 123 + if ($page > 0) { 124 + $links[] = array($page - 1, 'Prev', null); 125 + } 126 + 127 + for ($ii = $min; $ii <= $max; $ii++) { 128 + $links[] = array($ii, $ii + 1, ($ii == $page) ? 'current' : null); 129 + } 130 + 131 + if ($page < $last && $last > 0) { 132 + $links[] = array($page + 1, 'Next', null); 133 + } 134 + 135 + if ($max < ($last - 1)) { 136 + $links[] = array($last, 'Last', null); 137 + } 138 + 139 + $base_uri = $this->uri; 140 + $parameter = $this->pagingParameter; 141 + $page_size = $this->getPageSize(); 142 + 143 + // Convert tuples into rendered nodes. 144 + $rendered_links = array(); 145 + foreach ($links as $link) { 146 + list($index, $label, $class) = $link; 147 + // Use a 1-based sequence for display so that the number in the URI is 148 + // the same as the page number you're on. 149 + if ($index == 0) { 150 + // No need for the first page to say page=1. 151 + $display_index = null; 152 + } else { 153 + $display_index = $index * $page_size; 154 + } 155 + $link = $base_uri->alter($parameter, $display_index); 156 + $rendered_links[] = phutil_render_tag( 157 + 'a', 158 + array( 159 + 'href' => $link, 160 + 'class' => $class, 161 + ), 162 + $label); 163 + } 164 + 165 + return 166 + '<div class="aphront-pager-view">'. 167 + implode('', $rendered_links). 168 + '</div>'; 169 + } 170 + 171 + }
+15
src/view/control/pager/__init__.php
··· 1 + <?php 2 + /** 3 + * This file is automatically generated. Lint this module to rebuild it. 4 + * @generated 5 + */ 6 + 7 + 8 + 9 + phutil_require_module('phabricator', 'infrastructure/celerity/api'); 10 + phutil_require_module('phabricator', 'view/base'); 11 + 12 + phutil_require_module('phutil', 'markup'); 13 + 14 + 15 + phutil_require_source('AphrontPagerView.php');
+18
webroot/rsrc/css/aphront/pager-view.css
··· 1 + /** 2 + * @provides aphront-pager-view-css 3 + */ 4 + 5 + .aphront-pager-view { 6 + clear: both; 7 + text-align: right; 8 + padding: 8px 4px 16px; 9 + font-weight: bold; 10 + } 11 + 12 + .aphront-pager-view a { 13 + padding: 2px 3px; 14 + } 15 + 16 + .aphront-pager-view a.current { 17 + border-bottom: 2px solid; 18 + }
+22
webroot/rsrc/css/application/uiexample/example.css
··· 1 + /** 2 + * @provides phabricator-ui-example-css 3 + */ 4 + 5 + .phabricator-ui-example-note { 6 + padding: .5em; 7 + margin: 2em 1em 0.5em; 8 + background: #ffffdd; 9 + border: 1px solid #f5e178; 10 + } 11 + 12 + .phabricator-ui-example-note tt { 13 + font-weight: bold; 14 + } 15 + 16 + .phabricator-ui-example-header { 17 + margin: 1em 2em 2em; 18 + } 19 + 20 + .phabricator-ui-example-description { 21 + margin: 1em 0; 22 + }