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

In Packages, give publishers a list of packages and packages a list of versions

Summary: Ref T8116. Puts a list of packages on the publisher page, and a list of versions on the package page.

Test Plan: Viewed a publisher, saw packages. Viewed a package, saw versions. Looked at list views.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T8116

Differential Revision: https://secure.phabricator.com/D16321

+233 -33
+8
src/__phutil_library_map__.php
··· 2990 2990 'PhabricatorPackagesPackageEditor' => 'applications/packages/editor/PhabricatorPackagesPackageEditor.php', 2991 2991 'PhabricatorPackagesPackageKeyTransaction' => 'applications/packages/xaction/package/PhabricatorPackagesPackageKeyTransaction.php', 2992 2992 'PhabricatorPackagesPackageListController' => 'applications/packages/controller/PhabricatorPackagesPackageListController.php', 2993 + 'PhabricatorPackagesPackageListView' => 'applications/packages/view/PhabricatorPackagesPackageListView.php', 2993 2994 'PhabricatorPackagesPackageNameNgrams' => 'applications/packages/storage/PhabricatorPackagesPackageNameNgrams.php', 2994 2995 'PhabricatorPackagesPackageNameTransaction' => 'applications/packages/xaction/package/PhabricatorPackagesPackageNameTransaction.php', 2995 2996 'PhabricatorPackagesPackagePHIDType' => 'applications/packages/phid/PhabricatorPackagesPackagePHIDType.php', ··· 3011 3012 'PhabricatorPackagesPublisherEditor' => 'applications/packages/editor/PhabricatorPackagesPublisherEditor.php', 3012 3013 'PhabricatorPackagesPublisherKeyTransaction' => 'applications/packages/xaction/publisher/PhabricatorPackagesPublisherKeyTransaction.php', 3013 3014 'PhabricatorPackagesPublisherListController' => 'applications/packages/controller/PhabricatorPackagesPublisherListController.php', 3015 + 'PhabricatorPackagesPublisherListView' => 'applications/packages/view/PhabricatorPackagesPublisherListView.php', 3014 3016 'PhabricatorPackagesPublisherNameNgrams' => 'applications/packages/storage/PhabricatorPackagesPublisherNameNgrams.php', 3015 3017 'PhabricatorPackagesPublisherNameTransaction' => 'applications/packages/xaction/publisher/PhabricatorPackagesPublisherNameTransaction.php', 3016 3018 'PhabricatorPackagesPublisherPHIDType' => 'applications/packages/phid/PhabricatorPackagesPublisherPHIDType.php', ··· 3031 3033 'PhabricatorPackagesVersionEditEngine' => 'applications/packages/editor/PhabricatorPackagesVersionEditEngine.php', 3032 3034 'PhabricatorPackagesVersionEditor' => 'applications/packages/editor/PhabricatorPackagesVersionEditor.php', 3033 3035 'PhabricatorPackagesVersionListController' => 'applications/packages/controller/PhabricatorPackagesVersionListController.php', 3036 + 'PhabricatorPackagesVersionListView' => 'applications/packages/view/PhabricatorPackagesVersionListView.php', 3034 3037 'PhabricatorPackagesVersionNameNgrams' => 'applications/packages/storage/PhabricatorPackagesVersionNameNgrams.php', 3035 3038 'PhabricatorPackagesVersionNameTransaction' => 'applications/packages/xaction/version/PhabricatorPackagesVersionNameTransaction.php', 3036 3039 'PhabricatorPackagesVersionPHIDType' => 'applications/packages/phid/PhabricatorPackagesVersionPHIDType.php', ··· 3042 3045 'PhabricatorPackagesVersionTransactionQuery' => 'applications/packages/query/PhabricatorPackagesVersionTransactionQuery.php', 3043 3046 'PhabricatorPackagesVersionTransactionType' => 'applications/packages/xaction/version/PhabricatorPackagesVersionTransactionType.php', 3044 3047 'PhabricatorPackagesVersionViewController' => 'applications/packages/controller/PhabricatorPackagesVersionViewController.php', 3048 + 'PhabricatorPackagesView' => 'applications/packages/view/PhabricatorPackagesView.php', 3045 3049 'PhabricatorPagerUIExample' => 'applications/uiexample/examples/PhabricatorPagerUIExample.php', 3046 3050 'PhabricatorPassphraseApplication' => 'applications/passphrase/application/PhabricatorPassphraseApplication.php', 3047 3051 'PhabricatorPasswordAuthProvider' => 'applications/auth/provider/PhabricatorPasswordAuthProvider.php', ··· 7822 7826 'PhabricatorPackagesPackageEditor' => 'PhabricatorPackagesEditor', 7823 7827 'PhabricatorPackagesPackageKeyTransaction' => 'PhabricatorPackagesPackageTransactionType', 7824 7828 'PhabricatorPackagesPackageListController' => 'PhabricatorPackagesPackageController', 7829 + 'PhabricatorPackagesPackageListView' => 'PhabricatorPackagesView', 7825 7830 'PhabricatorPackagesPackageNameNgrams' => 'PhabricatorPackagesNgrams', 7826 7831 'PhabricatorPackagesPackageNameTransaction' => 'PhabricatorPackagesPackageTransactionType', 7827 7832 'PhabricatorPackagesPackagePHIDType' => 'PhabricatorPHIDType', ··· 7852 7857 'PhabricatorPackagesPublisherEditor' => 'PhabricatorPackagesEditor', 7853 7858 'PhabricatorPackagesPublisherKeyTransaction' => 'PhabricatorPackagesPublisherTransactionType', 7854 7859 'PhabricatorPackagesPublisherListController' => 'PhabricatorPackagesPublisherController', 7860 + 'PhabricatorPackagesPublisherListView' => 'PhabricatorPackagesView', 7855 7861 'PhabricatorPackagesPublisherNameNgrams' => 'PhabricatorPackagesNgrams', 7856 7862 'PhabricatorPackagesPublisherNameTransaction' => 'PhabricatorPackagesPublisherTransactionType', 7857 7863 'PhabricatorPackagesPublisherPHIDType' => 'PhabricatorPHIDType', ··· 7882 7888 'PhabricatorPackagesVersionEditEngine' => 'PhabricatorPackagesEditEngine', 7883 7889 'PhabricatorPackagesVersionEditor' => 'PhabricatorPackagesEditor', 7884 7890 'PhabricatorPackagesVersionListController' => 'PhabricatorPackagesVersionController', 7891 + 'PhabricatorPackagesVersionListView' => 'PhabricatorPackagesView', 7885 7892 'PhabricatorPackagesVersionNameNgrams' => 'PhabricatorPackagesNgrams', 7886 7893 'PhabricatorPackagesVersionNameTransaction' => 'PhabricatorPackagesVersionTransactionType', 7887 7894 'PhabricatorPackagesVersionPHIDType' => 'PhabricatorPHIDType', ··· 7893 7900 'PhabricatorPackagesVersionTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 7894 7901 'PhabricatorPackagesVersionTransactionType' => 'PhabricatorPackagesTransactionType', 7895 7902 'PhabricatorPackagesVersionViewController' => 'PhabricatorPackagesVersionController', 7903 + 'PhabricatorPackagesView' => 'AphrontView', 7896 7904 'PhabricatorPagerUIExample' => 'PhabricatorUIExample', 7897 7905 'PhabricatorPassphraseApplication' => 'PhabricatorApplication', 7898 7906 'PhabricatorPasswordAuthProvider' => 'PhabricatorAuthProvider',
+43 -1
src/applications/packages/controller/PhabricatorPackagesPackageViewController.php
··· 32 32 $header = $this->buildHeaderView($package); 33 33 $curtain = $this->buildCurtain($package); 34 34 35 + $versions_view = $this->buildVersionsView($package); 36 + 35 37 $timeline = $this->buildTransactionTimeline( 36 38 $package, 37 39 new PhabricatorPackagesPackageTransactionQuery()); 40 + $timeline->setShouldTerminate(true); 38 41 39 42 $package_view = id(new PHUITwoColumnView()) 40 43 ->setHeader($header) 41 44 ->setCurtain($curtain) 42 - ->setMainColumn($timeline); 45 + ->setMainColumn( 46 + array( 47 + $versions_view, 48 + $timeline, 49 + )); 43 50 44 51 return $this->newPage() 45 52 ->setCrumbs($crumbs) ··· 84 91 return $curtain; 85 92 } 86 93 94 + private function buildVersionsView(PhabricatorPackagesPackage $package) { 95 + $viewer = $this->getViewer(); 96 + 97 + $versions = id(new PhabricatorPackagesVersionQuery()) 98 + ->setViewer($viewer) 99 + ->withPackagePHIDs(array($package->getPHID())) 100 + ->setLimit(25) 101 + ->execute(); 102 + 103 + $versions_list = id(new PhabricatorPackagesVersionListView()) 104 + ->setViewer($viewer) 105 + ->setVersions($versions); 106 + 107 + $all_href = urisprintf( 108 + 'version/?package=%s#R', 109 + $package->getPHID()); 110 + $all_href = $this->getApplicationURI($all_href); 111 + 112 + $view_all = id(new PHUIButtonView()) 113 + ->setTag('a') 114 + ->setIcon('fa-search') 115 + ->setText(pht('View All')) 116 + ->setHref($all_href); 117 + 118 + $header = id(new PHUIHeaderView()) 119 + ->setHeader(pht('Versions')) 120 + ->addActionLink($view_all); 121 + 122 + $versions_view = id(new PHUIObjectBoxView()) 123 + ->setHeader($header) 124 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 125 + ->setObjectList($versions_list); 126 + 127 + return $versions_view; 128 + } 87 129 }
+44 -1
src/applications/packages/controller/PhabricatorPackagesPublisherViewController.php
··· 29 29 $header = $this->buildHeaderView($publisher); 30 30 $curtain = $this->buildCurtain($publisher); 31 31 32 + $packages_view = $this->buildPackagesView($publisher); 33 + 32 34 $timeline = $this->buildTransactionTimeline( 33 35 $publisher, 34 36 new PhabricatorPackagesPublisherTransactionQuery()); 37 + $timeline->setShouldTerminate(true); 35 38 36 39 $publisher_view = id(new PHUITwoColumnView()) 37 40 ->setHeader($header) 38 41 ->setCurtain($curtain) 39 - ->setMainColumn($timeline); 42 + ->setMainColumn( 43 + array( 44 + $packages_view, 45 + $timeline, 46 + )); 40 47 41 48 return $this->newPage() 42 49 ->setCrumbs($crumbs) ··· 79 86 ->setHref($edit_uri)); 80 87 81 88 return $curtain; 89 + } 90 + 91 + private function buildPackagesView(PhabricatorPackagesPublisher $publisher) { 92 + $viewer = $this->getViewer(); 93 + 94 + $packages = id(new PhabricatorPackagesPackageQuery()) 95 + ->setViewer($viewer) 96 + ->withPublisherPHIDs(array($publisher->getPHID())) 97 + ->setLimit(25) 98 + ->execute(); 99 + 100 + $packages_list = id(new PhabricatorPackagesPackageListView()) 101 + ->setViewer($viewer) 102 + ->setPackages($packages); 103 + 104 + $all_href = urisprintf( 105 + 'package/?publisher=%s#R', 106 + $publisher->getPHID()); 107 + $all_href = $this->getApplicationURI($all_href); 108 + 109 + $view_all = id(new PHUIButtonView()) 110 + ->setTag('a') 111 + ->setIcon('fa-search') 112 + ->setText(pht('View All')) 113 + ->setHref($all_href); 114 + 115 + $header = id(new PHUIHeaderView()) 116 + ->setHeader(pht('Packages')) 117 + ->addActionLink($view_all); 118 + 119 + $packages_view = id(new PHUIObjectBoxView()) 120 + ->setHeader($header) 121 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 122 + ->setObjectList($packages_list); 123 + 124 + return $packages_view; 82 125 } 83 126 84 127 }
+1
src/applications/packages/controller/PhabricatorPackagesVersionViewController.php
··· 39 39 $timeline = $this->buildTransactionTimeline( 40 40 $version, 41 41 new PhabricatorPackagesVersionTransactionQuery()); 42 + $timeline->setShouldTerminate(true); 42 43 43 44 $version_view = id(new PHUITwoColumnView()) 44 45 ->setHeader($header)
+4 -11
src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
··· 74 74 array $handles) { 75 75 76 76 assert_instances_of($packages, 'PhabricatorPackagesPackage'); 77 - 78 77 $viewer = $this->requireViewer(); 79 78 80 - $list = id(new PHUIObjectItemListView()) 81 - ->setViewer($viewer); 82 - foreach ($packages as $package) { 83 - $item = id(new PHUIObjectItemView()) 84 - ->setObjectName($package->getFullKey()) 85 - ->setHeader($package->getName()) 86 - ->setHref($package->getURI()); 87 - 88 - $list->addItem($item); 89 - } 79 + $list = id(new PhabricatorPackagesPackageListView()) 80 + ->setViewer($viewer) 81 + ->setPackages($packages) 82 + ->newListView(); 90 83 91 84 return id(new PhabricatorApplicationSearchResultView()) 92 85 ->setObjectList($list)
+4 -10
src/applications/packages/query/PhabricatorPackagesPublisherSearchEngine.php
··· 67 67 68 68 $viewer = $this->requireViewer(); 69 69 70 - $list = id(new PHUIObjectItemListView()) 71 - ->setViewer($viewer); 72 - foreach ($publishers as $publisher) { 73 - $item = id(new PHUIObjectItemView()) 74 - ->setObjectName($publisher->getPublisherKey()) 75 - ->setHeader($publisher->getName()) 76 - ->setHref($publisher->getURI()); 77 - 78 - $list->addItem($item); 79 - } 70 + $list = id(new PhabricatorPackagesPublisherListView()) 71 + ->setViewer($viewer) 72 + ->setPublishers($publishers) 73 + ->newListView(); 80 74 81 75 return id(new PhabricatorApplicationSearchResultView()) 82 76 ->setObjectList($list)
+4 -10
src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php
··· 73 73 array $handles) { 74 74 75 75 assert_instances_of($versions, 'PhabricatorPackagesVersion'); 76 - 77 76 $viewer = $this->requireViewer(); 78 77 79 - $list = id(new PHUIObjectItemListView()) 80 - ->setViewer($viewer); 81 - foreach ($versions as $version) { 82 - $item = id(new PHUIObjectItemView()) 83 - ->setHeader($version->getName()) 84 - ->setHref($version->getURI()); 85 - 86 - $list->addItem($item); 87 - } 78 + $list = id(new PhabricatorPackagesVersionListView()) 79 + ->setViewer($viewer) 80 + ->setVersions($versions) 81 + ->newListView(); 88 82 89 83 return id(new PhabricatorApplicationSearchResultView()) 90 84 ->setObjectList($list)
+41
src/applications/packages/view/PhabricatorPackagesPackageListView.php
··· 1 + <?php 2 + 3 + final class PhabricatorPackagesPackageListView 4 + extends PhabricatorPackagesView { 5 + 6 + private $packages; 7 + 8 + public function setPackages(array $packages) { 9 + assert_instances_of($packages, 'PhabricatorPackagesPackage'); 10 + $this->packages = $packages; 11 + return $this; 12 + } 13 + 14 + public function getPackages() { 15 + return $this->packages; 16 + } 17 + 18 + public function render() { 19 + return $this->newListView(); 20 + } 21 + 22 + public function newListView() { 23 + $viewer = $this->getViewer(); 24 + $packages = $this->getPackages(); 25 + 26 + $list = id(new PHUIObjectItemListView()) 27 + ->setViewer($viewer); 28 + 29 + foreach ($packages as $package) { 30 + $item = id(new PHUIObjectItemView()) 31 + ->setObjectName($package->getFullKey()) 32 + ->setHeader($package->getName()) 33 + ->setHref($package->getURI()); 34 + 35 + $list->addItem($item); 36 + } 37 + 38 + return $list; 39 + } 40 + 41 + }
+41
src/applications/packages/view/PhabricatorPackagesPublisherListView.php
··· 1 + <?php 2 + 3 + final class PhabricatorPackagesPublisherListView 4 + extends PhabricatorPackagesView { 5 + 6 + private $publishers; 7 + 8 + public function setPublishers(array $publishers) { 9 + assert_instances_of($publishers, 'PhabricatorPackagesPublisher'); 10 + $this->publishers = $publishers; 11 + return $this; 12 + } 13 + 14 + public function getPublishers() { 15 + return $this->publishers; 16 + } 17 + 18 + public function render() { 19 + return $this->newListView(); 20 + } 21 + 22 + public function newListView() { 23 + $viewer = $this->getViewer(); 24 + $publishers = $this->getPublishers(); 25 + 26 + $list = id(new PHUIObjectItemListView()) 27 + ->setViewer($viewer); 28 + 29 + foreach ($publishers as $publisher) { 30 + $item = id(new PHUIObjectItemView()) 31 + ->setObjectName($publisher->getPublisherKey()) 32 + ->setHeader($publisher->getName()) 33 + ->setHref($publisher->getURI()); 34 + 35 + $list->addItem($item); 36 + } 37 + 38 + return $list; 39 + } 40 + 41 + }
+40
src/applications/packages/view/PhabricatorPackagesVersionListView.php
··· 1 + <?php 2 + 3 + final class PhabricatorPackagesVersionListView 4 + extends PhabricatorPackagesView { 5 + 6 + private $versions; 7 + 8 + public function setVersions(array $versions) { 9 + assert_instances_of($versions, 'PhabricatorPackagesVersion'); 10 + $this->versions = $versions; 11 + return $this; 12 + } 13 + 14 + public function getVersions() { 15 + return $this->versions; 16 + } 17 + 18 + public function render() { 19 + return $this->newListView(); 20 + } 21 + 22 + public function newListView() { 23 + $viewer = $this->getViewer(); 24 + $versions = $this->getVersions(); 25 + 26 + $list = id(new PHUIObjectItemListView()) 27 + ->setViewer($viewer); 28 + 29 + foreach ($versions as $version) { 30 + $item = id(new PHUIObjectItemView()) 31 + ->setHeader($version->getName()) 32 + ->setHref($version->getURI()); 33 + 34 + $list->addItem($item); 35 + } 36 + 37 + return $list; 38 + } 39 + 40 + }
+3
src/applications/packages/view/PhabricatorPackagesView.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorPackagesView extends AphrontView {}