Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/files/controller/PhabricatorFileIconSetSelectController.php
12242 views
1
<?php
2
3
final class PhabricatorFileIconSetSelectController
4
extends PhabricatorFileController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$key = $request->getURIData('key');
8
9
$set = PhabricatorIconSet::getIconSetByKey($key);
10
if (!$set) {
11
return new Aphront404Response();
12
}
13
14
$v_icon = $request->getStr('icon');
15
if ($request->isFormPost()) {
16
$icon = $set->getIcon($v_icon);
17
18
if ($icon) {
19
$payload = array(
20
'value' => $icon->getKey(),
21
'display' => $set->renderIconForControl($icon),
22
);
23
24
return id(new AphrontAjaxResponse())
25
->setContent($payload);
26
}
27
}
28
29
require_celerity_resource('phui-icon-set-selector-css');
30
Javelin::initBehavior('phabricator-tooltips');
31
32
$ii = 0;
33
$buttons = array();
34
$breakpoint = ceil(sqrt(count($set->getIcons())));
35
foreach ($set->getIcons() as $icon) {
36
$label = $icon->getLabel();
37
38
$view = id(new PHUIIconView())
39
->setIcon($icon->getIcon());
40
41
$classes = array();
42
$classes[] = 'icon-button';
43
44
$is_selected = ($icon->getKey() == $v_icon);
45
46
if ($is_selected) {
47
$classes[] = 'selected';
48
}
49
50
$is_disabled = $icon->getIsDisabled();
51
if ($is_disabled && !$is_selected) {
52
continue;
53
}
54
55
$aural = javelin_tag(
56
'span',
57
array(
58
'aural' => true,
59
),
60
pht('Choose "%s" Icon', $label));
61
62
$buttons[] = javelin_tag(
63
'button',
64
array(
65
'class' => implode(' ', $classes),
66
'name' => 'icon',
67
'value' => $icon->getKey(),
68
'type' => 'submit',
69
'sigil' => 'has-tooltip',
70
'meta' => array(
71
'tip' => $label,
72
),
73
),
74
array(
75
$aural,
76
$view,
77
));
78
79
if ((++$ii % $breakpoint) == 0) {
80
$buttons[] = phutil_tag('br');
81
}
82
}
83
84
$buttons = phutil_tag(
85
'div',
86
array(
87
'class' => 'icon-grid',
88
),
89
$buttons);
90
91
$dialog_title = $set->getSelectIconTitleText();
92
93
return $this->newDialog()
94
->setTitle($dialog_title)
95
->appendChild($buttons)
96
->addCancelButton('/');
97
}
98
99
}
100
101