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

Trivially implement RepositoryEditEngine and API methods

Summary: Ref T10748. Ref T10337. This technically implements this stuff, but it does not do anything useful yet. This skips all the hard stuff.

Test Plan:
- Technically used `diffusion.repository.search` to get repository information.
- Technically used `diffusion.repository.edit` to change a repository name.
- Used `editpro/` to edit a repository name.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10337, T10748

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

+186 -2
+9
src/__phutil_library_map__.php
··· 750 750 'DiffusionRepositoryEditAutomationController' => 'applications/diffusion/controller/DiffusionRepositoryEditAutomationController.php', 751 751 'DiffusionRepositoryEditBasicController' => 'applications/diffusion/controller/DiffusionRepositoryEditBasicController.php', 752 752 'DiffusionRepositoryEditBranchesController' => 'applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php', 753 + 'DiffusionRepositoryEditConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionRepositoryEditConduitAPIMethod.php', 753 754 'DiffusionRepositoryEditController' => 'applications/diffusion/controller/DiffusionRepositoryEditController.php', 754 755 'DiffusionRepositoryEditDangerousController' => 'applications/diffusion/controller/DiffusionRepositoryEditDangerousController.php', 755 756 'DiffusionRepositoryEditDeleteController' => 'applications/diffusion/controller/DiffusionRepositoryEditDeleteController.php', 756 757 'DiffusionRepositoryEditEncodingController' => 'applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php', 758 + 'DiffusionRepositoryEditEngine' => 'applications/diffusion/editor/DiffusionRepositoryEditEngine.php', 757 759 'DiffusionRepositoryEditHostingController' => 'applications/diffusion/controller/DiffusionRepositoryEditHostingController.php', 758 760 'DiffusionRepositoryEditMainController' => 'applications/diffusion/controller/DiffusionRepositoryEditMainController.php', 759 761 'DiffusionRepositoryEditStagingController' => 'applications/diffusion/controller/DiffusionRepositoryEditStagingController.php', 760 762 'DiffusionRepositoryEditStorageController' => 'applications/diffusion/controller/DiffusionRepositoryEditStorageController.php', 761 763 'DiffusionRepositoryEditSubversionController' => 'applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php', 762 764 'DiffusionRepositoryEditUpdateController' => 'applications/diffusion/controller/DiffusionRepositoryEditUpdateController.php', 765 + 'DiffusionRepositoryEditproController' => 'applications/diffusion/controller/DiffusionRepositoryEditproController.php', 763 766 'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php', 764 767 'DiffusionRepositoryManageController' => 'applications/diffusion/controller/DiffusionRepositoryManageController.php', 765 768 'DiffusionRepositoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryManagementPanel.php', ··· 767 770 'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php', 768 771 'DiffusionRepositoryRef' => 'applications/diffusion/data/DiffusionRepositoryRef.php', 769 772 'DiffusionRepositoryRemarkupRule' => 'applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php', 773 + 'DiffusionRepositorySearchConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionRepositorySearchConduitAPIMethod.php', 770 774 'DiffusionRepositorySymbolsController' => 'applications/diffusion/controller/DiffusionRepositorySymbolsController.php', 771 775 'DiffusionRepositoryTag' => 'applications/diffusion/data/DiffusionRepositoryTag.php', 772 776 'DiffusionRepositoryTestAutomationController' => 'applications/diffusion/controller/DiffusionRepositoryTestAutomationController.php', ··· 4941 4945 'DiffusionRepositoryEditAutomationController' => 'DiffusionRepositoryEditController', 4942 4946 'DiffusionRepositoryEditBasicController' => 'DiffusionRepositoryEditController', 4943 4947 'DiffusionRepositoryEditBranchesController' => 'DiffusionRepositoryEditController', 4948 + 'DiffusionRepositoryEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod', 4944 4949 'DiffusionRepositoryEditController' => 'DiffusionController', 4945 4950 'DiffusionRepositoryEditDangerousController' => 'DiffusionRepositoryEditController', 4946 4951 'DiffusionRepositoryEditDeleteController' => 'DiffusionRepositoryEditController', 4947 4952 'DiffusionRepositoryEditEncodingController' => 'DiffusionRepositoryEditController', 4953 + 'DiffusionRepositoryEditEngine' => 'PhabricatorEditEngine', 4948 4954 'DiffusionRepositoryEditHostingController' => 'DiffusionRepositoryEditController', 4949 4955 'DiffusionRepositoryEditMainController' => 'DiffusionRepositoryEditController', 4950 4956 'DiffusionRepositoryEditStagingController' => 'DiffusionRepositoryEditController', 4951 4957 'DiffusionRepositoryEditStorageController' => 'DiffusionRepositoryEditController', 4952 4958 'DiffusionRepositoryEditSubversionController' => 'DiffusionRepositoryEditController', 4953 4959 'DiffusionRepositoryEditUpdateController' => 'DiffusionRepositoryEditController', 4960 + 'DiffusionRepositoryEditproController' => 'DiffusionRepositoryEditController', 4954 4961 'DiffusionRepositoryListController' => 'DiffusionController', 4955 4962 'DiffusionRepositoryManageController' => 'DiffusionController', 4956 4963 'DiffusionRepositoryManagementPanel' => 'Phobject', ··· 4958 4965 'DiffusionRepositoryPath' => 'Phobject', 4959 4966 'DiffusionRepositoryRef' => 'Phobject', 4960 4967 'DiffusionRepositoryRemarkupRule' => 'PhabricatorObjectRemarkupRule', 4968 + 'DiffusionRepositorySearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod', 4961 4969 'DiffusionRepositorySymbolsController' => 'DiffusionRepositoryEditController', 4962 4970 'DiffusionRepositoryTag' => 'Phobject', 4963 4971 'DiffusionRepositoryTestAutomationController' => 'DiffusionRepositoryEditController', ··· 7747 7755 'PhabricatorDestructibleInterface', 7748 7756 'PhabricatorProjectInterface', 7749 7757 'PhabricatorSpacesInterface', 7758 + 'PhabricatorConduitResultInterface', 7750 7759 ), 7751 7760 'PhabricatorRepositoryAuditRequest' => array( 7752 7761 'PhabricatorRepositoryDAO',
+3 -1
src/applications/diffusion/application/PhabricatorDiffusionApplication.php
··· 55 55 => 'DiffusionCommitController', 56 56 57 57 '/diffusion/' => array( 58 - '(?:query/(?P<queryKey>[^/]+)/)?' 58 + $this->getQueryRoutePattern() 59 59 => 'DiffusionRepositoryListController', 60 + $this->getEditRoutePattern('editpro/') => 61 + 'DiffusionRepositoryEditproController', 60 62 'new/' => 'DiffusionRepositoryNewController', 61 63 '(?P<edit>create)/' => 'DiffusionRepositoryCreateController', 62 64 '(?P<edit>import)/' => 'DiffusionRepositoryCreateController',
+20
src/applications/diffusion/conduit/DiffusionRepositoryEditConduitAPIMethod.php
··· 1 + <?php 2 + 3 + final class DiffusionRepositoryEditConduitAPIMethod 4 + extends PhabricatorEditEngineAPIMethod { 5 + 6 + public function getAPIMethodName() { 7 + return 'diffusion.repository.edit'; 8 + } 9 + 10 + public function newEditEngine() { 11 + return new DiffusionRepositoryEditEngine(); 12 + } 13 + 14 + public function getMethodSummary() { 15 + return pht( 16 + 'Apply transactions to create a new repository or edit an existing '. 17 + 'one.'); 18 + } 19 + 20 + }
+18
src/applications/diffusion/conduit/DiffusionRepositorySearchConduitAPIMethod.php
··· 1 + <?php 2 + 3 + final class DiffusionRepositorySearchConduitAPIMethod 4 + extends PhabricatorSearchEngineAPIMethod { 5 + 6 + public function getAPIMethodName() { 7 + return 'diffusion.repository.search'; 8 + } 9 + 10 + public function newSearchEngine() { 11 + return new PhabricatorRepositorySearchEngine(); 12 + } 13 + 14 + public function getMethodSummary() { 15 + return pht('Read information about repositories.'); 16 + } 17 + 18 + }
+12
src/applications/diffusion/controller/DiffusionRepositoryEditproController.php
··· 1 + <?php 2 + 3 + final class DiffusionRepositoryEditproController 4 + extends DiffusionRepositoryEditController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + return id(new DiffusionRepositoryEditEngine()) 8 + ->setController($this) 9 + ->buildResponse(); 10 + } 11 + 12 + }
+84
src/applications/diffusion/editor/DiffusionRepositoryEditEngine.php
··· 1 + <?php 2 + 3 + final class DiffusionRepositoryEditEngine 4 + extends PhabricatorEditEngine { 5 + 6 + const ENGINECONST = 'diffusion.repository'; 7 + 8 + public function isEngineConfigurable() { 9 + return false; 10 + } 11 + 12 + public function getEngineName() { 13 + return pht('Repositories'); 14 + } 15 + 16 + public function getSummaryHeader() { 17 + return pht('Edit Repositories'); 18 + } 19 + 20 + public function getSummaryText() { 21 + return pht('Creates and edits repositories.'); 22 + } 23 + 24 + public function getEngineApplicationClass() { 25 + return 'PhabricatorDiffusionApplication'; 26 + } 27 + 28 + protected function newEditableObject() { 29 + $viewer = $this->getViewer(); 30 + return PhabricatorRepository::initializeNewRepository($viewer); 31 + } 32 + 33 + protected function newObjectQuery() { 34 + return new PhabricatorRepositoryQuery(); 35 + } 36 + 37 + protected function getObjectCreateTitleText($object) { 38 + return pht('Create Repository'); 39 + } 40 + 41 + protected function getObjectCreateButtonText($object) { 42 + return pht('Create Repository'); 43 + } 44 + 45 + protected function getObjectEditTitleText($object) { 46 + return pht('Edit Repository: %s', $object->getName()); 47 + } 48 + 49 + protected function getObjectEditShortText($object) { 50 + return $object->getDisplayName(); 51 + } 52 + 53 + protected function getObjectCreateShortText() { 54 + return pht('Create Repository'); 55 + } 56 + 57 + protected function getObjectName() { 58 + return pht('Repository'); 59 + } 60 + 61 + protected function getObjectViewURI($object) { 62 + return $object->getPathURI('manage/'); 63 + } 64 + 65 + protected function getCreateNewObjectPolicy() { 66 + return $this->getApplication()->getPolicy( 67 + DiffusionCreateRepositoriesCapability::CAPABILITY); 68 + } 69 + 70 + protected function buildCustomEditFields($object) { 71 + return array( 72 + id(new PhabricatorTextEditField()) 73 + ->setKey('name') 74 + ->setLabel(pht('Name')) 75 + ->setIsRequired(true) 76 + ->setTransactionType(PhabricatorRepositoryTransaction::TYPE_NAME) 77 + ->setDescription(pht('The repository name.')) 78 + ->setConduitDescription(pht('Rename the repository.')) 79 + ->setConduitTypeDescription(pht('New repository name.')) 80 + ->setValue($object->getName()), 81 + ); 82 + } 83 + 84 + }
+40 -1
src/applications/repository/storage/PhabricatorRepository.php
··· 13 13 PhabricatorMarkupInterface, 14 14 PhabricatorDestructibleInterface, 15 15 PhabricatorProjectInterface, 16 - PhabricatorSpacesInterface { 16 + PhabricatorSpacesInterface, 17 + PhabricatorConduitResultInterface { 17 18 18 19 /** 19 20 * Shortest hash we'll recognize in raw "a829f32" form. ··· 2624 2625 2625 2626 public function getSpacePHID() { 2626 2627 return $this->spacePHID; 2628 + } 2629 + 2630 + /* -( PhabricatorConduitResultInterface )---------------------------------- */ 2631 + 2632 + 2633 + public function getFieldSpecificationsForConduit() { 2634 + return array( 2635 + id(new PhabricatorConduitSearchFieldSpecification()) 2636 + ->setKey('name') 2637 + ->setType('string') 2638 + ->setDescription(pht('The repository name.')), 2639 + id(new PhabricatorConduitSearchFieldSpecification()) 2640 + ->setKey('vcs') 2641 + ->setType('string') 2642 + ->setDescription( 2643 + pht('The VCS this repository uses ("git", "hg" or "svn").')), 2644 + id(new PhabricatorConduitSearchFieldSpecification()) 2645 + ->setKey('callsign') 2646 + ->setType('string') 2647 + ->setDescription(pht('The repository callsign, if it has one.')), 2648 + id(new PhabricatorConduitSearchFieldSpecification()) 2649 + ->setKey('shortName') 2650 + ->setType('string') 2651 + ->setDescription(pht('Unique short name, if the repository has one.')), 2652 + ); 2653 + } 2654 + 2655 + public function getFieldValuesForConduit() { 2656 + return array( 2657 + 'name' => $this->getName(), 2658 + 'vcs' => $this->getVersionControlSystem(), 2659 + 'callsign' => $this->getCallsign(), 2660 + 'shortName' => $this->getRepositorySlug(), 2661 + ); 2662 + } 2663 + 2664 + public function getConduitSearchAttachments() { 2665 + return array(); 2627 2666 } 2628 2667 2629 2668 }