@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<?php
2
3final class PhabricatorProjectSubprojectWarningController
4 extends PhabricatorProjectController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8
9 $response = $this->loadProject();
10 if ($response) {
11 return $response;
12 }
13
14 $project = $this->getProject();
15
16 $can_edit = PhabricatorPolicyFilter::hasCapability(
17 $viewer,
18 $project,
19 PhabricatorPolicyCapability::CAN_EDIT);
20
21 if (!$can_edit) {
22 return new Aphront404Response();
23 }
24
25 $id = $project->getID();
26 $cancel_uri = "/project/subprojects/{$id}/";
27 $done_uri = "/project/edit/?parent={$id}";
28
29 if ($request->isFormPost()) {
30 return id(new AphrontRedirectResponse())
31 ->setURI($done_uri);
32 }
33
34 $doc_href = PhabricatorEnv::getDoclink('Projects User Guide');
35
36 $conversion_help = pht(
37 "Creating a project's first subproject **moves all ".
38 "members** to become members of the subproject instead.".
39 "\n\n".
40 "See [[ %s | Projects User Guide ]] in the documentation for details. ".
41 "This process can not be undone.",
42 $doc_href);
43
44 return $this->newDialog()
45 ->setTitle(pht('Convert to Parent Project'))
46 ->appendChild(new PHUIRemarkupView($viewer, $conversion_help))
47 ->addCancelButton($cancel_uri)
48 ->addSubmitButton(pht('Convert Project'));
49 }
50
51}