@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 PhabricatorFlagSelectControl extends AphrontFormControl {
4
5 protected function getCustomControlClass() {
6 return 'phabricator-flag-select-control';
7 }
8
9 protected function renderInput() {
10 require_celerity_resource('phabricator-flag-css');
11
12 $colors = PhabricatorFlagColor::getColorNameMap();
13
14 $value_map = array_fuse($this->getValue());
15
16 $file_map = array(
17 PhabricatorFlagColor::COLOR_RED => 'red',
18 PhabricatorFlagColor::COLOR_ORANGE => 'orange',
19 PhabricatorFlagColor::COLOR_YELLOW => 'yellow',
20 PhabricatorFlagColor::COLOR_GREEN => 'green',
21 PhabricatorFlagColor::COLOR_BLUE => 'blue',
22 PhabricatorFlagColor::COLOR_PINK => 'pink',
23 PhabricatorFlagColor::COLOR_PURPLE => 'purple',
24 PhabricatorFlagColor::COLOR_CHECKERED => 'finish',
25 );
26
27 $out = array();
28 foreach ($colors as $const => $name) {
29 // TODO: This should probably be a sprite sheet.
30 $partial = $file_map[$const];
31 $uri = '/rsrc/image/icon/flags/flag_'.$partial.'.svg';
32 $uri = celerity_get_resource_uri($uri);
33
34 $icon = id(new PHUIIconView())
35 ->setHeadSize(PHUIIconView::HEAD_FLAG)
36 ->setImage($uri);
37
38 $input = phutil_tag(
39 'input',
40 array(
41 'type' => 'checkbox',
42 'name' => $this->getName().'[]',
43 'aria-label' => $partial,
44 'value' => $const,
45 'checked' => isset($value_map[$const])
46 ? 'checked'
47 : null,
48 'class' => 'phabricator-flag-select-checkbox',
49 ));
50
51 $label = phutil_tag(
52 'label',
53 array(
54 'class' => 'phabricator-flag-select-label',
55 ),
56 array(
57 $icon,
58 $input,
59 ));
60
61 $out[] = $label;
62 }
63
64 return $out;
65 }
66
67}