Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/calendar/query/PhabricatorCalendarExportSearchEngine.php
12256 views
1
<?php
2
3
final class PhabricatorCalendarExportSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('Calendar Exports');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorCalendarApplication';
12
}
13
14
public function canUseInPanelContext() {
15
return false;
16
}
17
18
public function newQuery() {
19
$viewer = $this->requireViewer();
20
21
return id(new PhabricatorCalendarExportQuery())
22
->withAuthorPHIDs(array($viewer->getPHID()));
23
}
24
25
protected function buildCustomSearchFields() {
26
return array();
27
}
28
29
protected function buildQueryFromParameters(array $map) {
30
$query = $this->newQuery();
31
32
return $query;
33
}
34
35
protected function getURI($path) {
36
return '/calendar/export/'.$path;
37
}
38
39
protected function getBuiltinQueryNames() {
40
$names = array(
41
'all' => pht('All Exports'),
42
);
43
44
return $names;
45
}
46
47
public function buildSavedQueryFromBuiltin($query_key) {
48
$query = $this->newSavedQuery();
49
$query->setQueryKey($query_key);
50
51
switch ($query_key) {
52
case 'all':
53
return $query;
54
}
55
56
return parent::buildSavedQueryFromBuiltin($query_key);
57
}
58
59
protected function renderResultList(
60
array $exports,
61
PhabricatorSavedQuery $query,
62
array $handles) {
63
64
assert_instances_of($exports, 'PhabricatorCalendarExport');
65
$viewer = $this->requireViewer();
66
67
$list = new PHUIObjectItemListView();
68
foreach ($exports as $export) {
69
$item = id(new PHUIObjectItemView())
70
->setViewer($viewer)
71
->setObjectName(pht('Export %d', $export->getID()))
72
->setHeader($export->getName())
73
->setHref($export->getURI());
74
75
if ($export->getIsDisabled()) {
76
$item->setDisabled(true);
77
}
78
79
$mode = $export->getPolicyMode();
80
$policy_icon = PhabricatorCalendarExport::getPolicyModeIcon($mode);
81
$policy_name = PhabricatorCalendarExport::getPolicyModeName($mode);
82
$policy_color = PhabricatorCalendarExport::getPolicyModeColor($mode);
83
84
$item->addIcon(
85
"{$policy_icon} {$policy_color}",
86
$policy_name);
87
88
$list->addItem($item);
89
}
90
91
$result = new PhabricatorApplicationSearchResultView();
92
$result->setObjectList($list);
93
$result->setNoDataString(pht('No exports found.'));
94
95
return $result;
96
}
97
98
protected function getNewUserBody() {
99
$doc_name = 'Calendar User Guide: Exporting Events';
100
$doc_href = PhabricatorEnv::getDoclink($doc_name);
101
102
$create_button = id(new PHUIButtonView())
103
->setTag('a')
104
->setIcon('fa-book white')
105
->setText($doc_name)
106
->setHref($doc_href)
107
->setColor(PHUIButtonView::GREEN);
108
109
$icon = $this->getApplication()->getIcon();
110
$app_name = $this->getApplication()->getName();
111
$view = id(new PHUIBigInfoView())
112
->setIcon('fa-download')
113
->setTitle(pht('No Exports Configured'))
114
->setDescription(
115
pht(
116
'You have not set up any events for export from Calendar yet. '.
117
'See the documentation for instructions on how to get started.'))
118
->addAction($create_button);
119
120
return $view;
121
}
122
123
}
124
125