Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/flag/controller/PhabricatorFlagEditController.php
12256 views
1
<?php
2
3
final class PhabricatorFlagEditController extends PhabricatorFlagController {
4
5
public function handleRequest(AphrontRequest $request) {
6
$viewer = $request->getViewer();
7
$phid = $request->getURIData('phid');
8
9
$handle = id(new PhabricatorHandleQuery())
10
->setViewer($viewer)
11
->withPHIDs(array($phid))
12
->executeOne();
13
14
if (!$handle->isComplete()) {
15
return new Aphront404Response();
16
}
17
18
$flag = PhabricatorFlagQuery::loadUserFlag($viewer, $phid);
19
20
if (!$flag) {
21
$flag = new PhabricatorFlag();
22
$flag->setOwnerPHID($viewer->getPHID());
23
$flag->setType($handle->getType());
24
$flag->setObjectPHID($handle->getPHID());
25
$flag->setReasonPHID($viewer->getPHID());
26
}
27
28
if ($request->isDialogFormPost()) {
29
$flag->setColor($request->getInt('color'));
30
$flag->setNote($request->getStr('note'));
31
$flag->save();
32
33
return id(new AphrontReloadResponse())->setURI('/flag/');
34
}
35
36
$type_name = $handle->getTypeName();
37
38
$dialog = new AphrontDialogView();
39
$dialog->setUser($viewer);
40
41
$dialog->setTitle(pht('Flag %s', $type_name));
42
43
require_celerity_resource('phabricator-flag-css');
44
45
$form = new PHUIFormLayoutView();
46
47
$is_new = !$flag->getID();
48
49
if ($is_new) {
50
$form
51
->appendChild(hsprintf(
52
'<p>%s</p><br />',
53
pht('You can flag this %s if you want to remember to look '.
54
'at it later.',
55
$type_name)));
56
}
57
58
$radio = new AphrontFormRadioButtonControl();
59
foreach (PhabricatorFlagColor::getColorNameMap() as $color => $text) {
60
$class = 'phabricator-flag-radio phabricator-flag-color-'.$color;
61
$radio->addButton($color, $text, '', $class);
62
}
63
64
$form
65
->appendChild(
66
$radio
67
->setName('color')
68
->setLabel(pht('Flag Color'))
69
->setValue($flag->getColor()))
70
->appendChild(
71
id(new AphrontFormTextAreaControl())
72
->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_SHORT)
73
->setName('note')
74
->setLabel(pht('Note'))
75
->setValue($flag->getNote()));
76
77
$dialog->appendChild($form);
78
79
$dialog->addCancelButton($handle->getURI());
80
$dialog->addSubmitButton(
81
$is_new ? pht('Create Flag') : pht('Save'));
82
83
return id(new AphrontDialogResponse())->setDialog($dialog);
84
}
85
86
}
87
88