Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/dashboard/editfield/PhabricatorDashboardQueryPanelQueryEditField.php
13450 views
1
<?php
2
3
final class PhabricatorDashboardQueryPanelQueryEditField
4
extends PhabricatorEditField {
5
6
private $applicationControlID;
7
8
public function setApplicationControlID($id) {
9
$this->applicationControlID = $id;
10
return $this;
11
}
12
13
public function getApplicationControlID() {
14
return $this->applicationControlID;
15
}
16
17
protected function newControl() {
18
$engines = id(new PhutilClassMapQuery())
19
->setAncestorClass('PhabricatorApplicationSearchEngine')
20
->setFilterMethod('canUseInPanelContext')
21
->execute();
22
23
$value = $this->getValueForControl();
24
25
$queries = array();
26
$seen = false;
27
foreach ($engines as $engine_class => $engine) {
28
$engine->setViewer($this->getViewer());
29
$engine_queries = $engine->loadEnabledNamedQueries();
30
$query_map = mpull($engine_queries, 'getQueryName', 'getQueryKey');
31
asort($query_map);
32
33
foreach ($query_map as $key => $name) {
34
$queries[$engine_class][] = array('key' => $key, 'name' => $name);
35
if ($key == $value) {
36
$seen = true;
37
}
38
}
39
}
40
41
if (strlen($value) && !$seen) {
42
$name = pht('Custom Query ("%s")', $value);
43
} else {
44
$name = pht('(None)');
45
}
46
47
$options = array($value => $name);
48
49
$application_id = $this->getApplicationControlID();
50
$control_id = celerity_generate_unique_node_id();
51
52
Javelin::initBehavior(
53
'dashboard-query-panel-select',
54
array(
55
'applicationID' => $application_id,
56
'queryID' => $control_id,
57
'options' => $queries,
58
'value' => array(
59
'key' => strlen($value) ? $value : null,
60
'name' => $name,
61
),
62
));
63
64
return id(new AphrontFormSelectControl())
65
->setID($control_id)
66
->setOptions($options);
67
}
68
69
protected function newHTTPParameterType() {
70
return new AphrontSelectHTTPParameterType();
71
}
72
73
protected function newConduitParameterType() {
74
return new ConduitStringParameterType();
75
}
76
77
}
78
79