Christopher Johnson (WMDE) has submitted this change and it was merged. Change subject: adds sprint.getissprint and sprint.setissprint conduit API methods ......................................................................
adds sprint.getissprint and sprint.setissprint conduit API methods Bug: T106816 Change-Id: I21d6da4067a1b89b8ce5e4f841a0a289a2b494a7 --- M .gitignore M src/__phutil_library_map__.php M src/conduit/SprintConduitAPIMethod.php A src/conduit/SprintGetIsSprintConduitAPIMethod.php A src/conduit/SprintSetIsSprintConduitAPIMethod.php 5 files changed, 120 insertions(+), 1 deletion(-) Approvals: Christopher Johnson (WMDE): Verified; Looks good to me, approved diff --git a/.gitignore b/.gitignore index e2c639d..b028a5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .phutil_module_cache vendor/ /src/tests/clover.xml +/src/tests/selenium/.idea/ +/src/tests/selenium/phabricator.sprint/.idea/ +/src/tests/selenium/phabricator.sprint/phabricator.sprint.iml diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 84b3327..20d42d8 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -50,6 +50,7 @@ 'SprintDataViewController' => 'controller/SprintDataViewController.php', 'SprintDefaultViewCapability' => 'capability/SprintDefaultViewCapability.php', 'SprintEndDateField' => 'customfield/SprintEndDateField.php', + 'SprintGetIsSprintConduitAPIMethod' => 'conduit/SprintGetIsSprintConduitAPIMethod.php', 'SprintGetTaskProjectHistoryConduitAPIMethod' => 'conduit/SprintGetTaskProjectHistoryConduitAPIMethod.php', 'SprintHandleIconView' => 'view/SprintHandleIconView.php', 'SprintHistoryController' => 'controller/SprintHistoryController.php', @@ -68,6 +69,7 @@ 'SprintReportBurnUpView' => 'view/reports/SprintReportBurnUpView.php', 'SprintReportController' => 'controller/SprintReportController.php', 'SprintReportOpenTasksView' => 'view/reports/SprintReportOpenTasksView.php', + 'SprintSetIsSprintConduitAPIMethod' => 'conduit/SprintSetIsSprintConduitAPIMethod.php', 'SprintStats' => 'storage/SprintStats.php', 'SprintStatsTest' => 'tests/SprintStatsTest.php', 'SprintTableView' => 'view/SprintTableView.php', @@ -82,15 +84,21 @@ ), 'function' => array(), 'xmap' => array( + 'BoardDataPieView' => 'Phobject', + 'BoardDataTableView' => 'Phobject', 'BurndownActionMenuEventListener' => 'PhabricatorEventListener', + 'BurndownChartView' => 'Phobject', + 'BurndownDataDate' => 'Phobject', 'BurndownException' => 'AphrontUsageException', 'CeleritySprintResources' => 'CelerityResourcesOnDisk', 'DateIterator' => 'Iterator', + 'EventTableView' => 'Phobject', 'ProjectOpenTasksView' => 'OpenTasksView', 'SprintApplication' => 'PhabricatorApplication', 'SprintApplicationTest' => 'SprintTestCase', 'SprintBeginDateField' => 'SprintProjectCustomField', 'SprintBoardBatchEditController' => 'ManiphestController', + 'SprintBoardCardToken' => 'Phobject', 'SprintBoardColumnDetailController' => 'SprintBoardController', 'SprintBoardColumnEditController' => 'SprintBoardController', 'SprintBoardColumnHideController' => 'SprintBoardController', @@ -98,6 +106,7 @@ 'SprintBoardImportController' => 'SprintBoardController', 'SprintBoardMoveController' => 'SprintBoardController', 'SprintBoardReorderController' => 'SprintBoardController', + 'SprintBoardTaskCard' => 'Phobject', 'SprintBoardTaskEditController' => 'ManiphestController', 'SprintBoardViewController' => 'SprintBoardController', 'SprintConduitAPIMethod' => 'ConduitAPIMethod', @@ -111,11 +120,15 @@ 'SprintDataViewController' => 'SprintController', 'SprintDefaultViewCapability' => 'PhabricatorPolicyCapability', 'SprintEndDateField' => 'SprintProjectCustomField', + 'SprintGetIsSprintConduitAPIMethod' => 'SprintConduitAPIMethod', 'SprintGetTaskProjectHistoryConduitAPIMethod' => 'SprintConduitAPIMethod', 'SprintHandleIconView' => 'AphrontTagView', 'SprintHistoryController' => 'SprintController', + 'SprintHistoryTableView' => 'SprintView', 'SprintIsSprintField' => 'SprintProjectCustomField', 'SprintListController' => 'SprintController', + 'SprintListTableView' => 'Phobject', + 'SprintPoints' => 'Phobject', 'SprintProjectCustomField' => array( 'PhabricatorProjectCustomField', 'PhabricatorStandardCustomFieldInterface', @@ -127,6 +140,7 @@ 'SprintReportBurnUpView' => 'SprintView', 'SprintReportController' => 'SprintController', 'SprintReportOpenTasksView' => 'SprintView', + 'SprintSetIsSprintConduitAPIMethod' => 'SprintConduitAPIMethod', 'SprintStatsTest' => 'SprintTestCase', 'SprintTableView' => 'AphrontView', 'SprintTaskStoryPointsField' => array( @@ -135,7 +149,9 @@ ), 'SprintTestCase' => 'PHPUnit_Framework_TestCase', 'SprintUIObjectBoxView' => 'AphrontView', + 'SprintValidator' => 'Phobject', 'SprintView' => 'AphrontView', + 'TasksTableView' => 'Phobject', 'UserOpenTasksView' => 'OpenTasksView', ), )); diff --git a/src/conduit/SprintConduitAPIMethod.php b/src/conduit/SprintConduitAPIMethod.php index 4c3a33c..c41a204 100644 --- a/src/conduit/SprintConduitAPIMethod.php +++ b/src/conduit/SprintConduitAPIMethod.php @@ -25,7 +25,7 @@ $project_slugs = $project->getSlugs(); $project_slugs = array_values(mpull($project_slugs, 'getSlug')); - + $issprint = $this->isSprint($project->getPHID()); $project_icon = PhabricatorProjectIcon::getAPIName($project->getIcon()); $result[$project->getPHID()] = array( @@ -37,6 +37,7 @@ 'color' => $project->getColor(), 'members' => $member_phids, 'slugs' => $project_slugs, + 'issprint' => $issprint, 'dateCreated' => $project->getDateCreated(), 'dateModified' => $project->getDateModified(), ); @@ -45,4 +46,10 @@ return $result; } + protected function isSprint($project_phid) { + $validator = new SprintValidator(); + $issprint = call_user_func(array($validator, 'checkForSprint'), + array($validator, 'isSprint'), $project_phid); + return $issprint; + } } diff --git a/src/conduit/SprintGetIsSprintConduitAPIMethod.php b/src/conduit/SprintGetIsSprintConduitAPIMethod.php new file mode 100644 index 0000000..c89c1b4 --- /dev/null +++ b/src/conduit/SprintGetIsSprintConduitAPIMethod.php @@ -0,0 +1,31 @@ +<?php + +final class SprintGetIsSprintConduitAPIMethod extends SprintConduitAPIMethod { + + public function getAPIMethodName() { + return 'sprint.getissprint'; + } + + public function getMethodDescription() { + return pht('Get if a project is a sprint'); + } + + public function defineParamTypes() { + return array( + 'project' => 'required string ("PHID")', + ); + } + + public function defineReturnType() { + return 'bool'; + } + + public function defineErrorTypes() { + return array(); + } + + protected function execute(ConduitAPIRequest $request) { + $project_phid = $request->getValue('project'); + return $this->isSprint($project_phid); + } +} diff --git a/src/conduit/SprintSetIsSprintConduitAPIMethod.php b/src/conduit/SprintSetIsSprintConduitAPIMethod.php new file mode 100644 index 0000000..cd7fd91 --- /dev/null +++ b/src/conduit/SprintSetIsSprintConduitAPIMethod.php @@ -0,0 +1,62 @@ +<?php + +final class SprintSetIsSprintConduitAPIMethod extends SprintConduitAPIMethod { + + public function getAPIMethodName() { + return 'sprint.setissprint'; + } + + public function getMethodDescription() { + return pht('Set a project as a sprint'); + } + + public function defineParamTypes() { + return array( + 'project' => 'required string ("PHID")', + 'issprint' => 'boolean ("1")', + ); + } + + public function defineReturnType() { + return 'dict'; + } + + public function defineErrorTypes() { + return array(); + } + + protected function execute(ConduitAPIRequest $request) { + $user = $request->getUser(); + + $this->requireApplicationCapability( + ProjectCreateProjectsCapability::CAPABILITY, + $user); + + $xactions = array(); + + $xactions[] = id(new PhabricatorProjectTransaction()) + ->setTransactionType(PhabricatorTransactions::TYPE_CUSTOMFIELD) + ->setMetadataValue('customfield:key', 'isdc:sprint:issprint') + ->setOldValue(null) + ->setNewValue($request->getValue('issprint')); + + $editor = id(new PhabricatorProjectTransactionEditor()) + ->setActor($user) + ->setContinueOnNoEffect(true) + ->setContentSourceFromConduitRequest($request); + + $project = id(new PhabricatorProjectQuery()) + ->setViewer($user) + ->withPHIDS(array($request->getValue('project'))) + ->needSlugs(true) + ->executeOne(); + + if (!$project) { + return null; + } else { + $editor->applyTransactions($project, $xactions); + return $this->buildProjectInfoDictionary($project); + } + } + +} -- To view, visit https://gerrit.wikimedia.org/r/226965 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I21d6da4067a1b89b8ce5e4f841a0a289a2b494a7 Gerrit-PatchSet: 2 Gerrit-Project: phabricator/extensions/Sprint Gerrit-Branch: master Gerrit-Owner: Christopher Johnson (WMDE) <christopher.john...@wikimedia.de> Gerrit-Reviewer: Christopher Johnson (WMDE) <christopher.john...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits