@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 PhabricatorAuthMessageListController
4 extends PhabricatorAuthProviderController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $this->getViewer();
8
9 $can_manage = $this->hasApplicationCapability(
10 AuthManageProvidersCapability::CAPABILITY);
11
12 $types = PhabricatorAuthMessageType::getAllMessageTypes();
13
14 $messages = id(new PhabricatorAuthMessageQuery())
15 ->setViewer($viewer)
16 ->execute();
17 $messages = mpull($messages, null, 'getMessageKey');
18
19 $list = new PHUIObjectItemListView();
20 foreach ($types as $type) {
21 $message = idx($messages, $type->getMessageTypeKey());
22
23 if ($message) {
24 $href = $message->getURI();
25 $name = $message->getMessageTypeDisplayName();
26 } else {
27 $href = urisprintf(
28 '/auth/message/%s/',
29 $type->getMessageTypeKey());
30 $name = $type->getDisplayName();
31 }
32
33 $item = id(new PHUIObjectItemView())
34 ->setHeader($name)
35 ->setHref($href)
36 ->addAttribute($type->getShortDescription());
37
38 if ($message) {
39 $item->addIcon('fa-circle', pht('Customized'));
40 } else {
41 $item->addIcon('fa-circle-o grey', pht('Default'));
42 }
43
44 $list->addItem($item);
45 }
46
47 $crumbs = $this->buildApplicationCrumbs()
48 ->addTextCrumb(pht('Messages'))
49 ->setBorder(true);
50
51 $list->setFlush(true);
52 $list = id(new PHUIObjectBoxView())
53 ->setHeaderText(pht('Auth Messages'))
54 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
55 ->appendChild($list);
56
57 $title = pht('Auth Messages');
58 $header = id(new PHUIHeaderView())
59 ->setHeader($title)
60 ->setHeaderIcon('fa-commenting-o');
61
62 $view = id(new PHUITwoColumnView())
63 ->setHeader($header)
64 ->setFooter(
65 array(
66 $list,
67 ));
68
69 $nav = $this->newNavigation()
70 ->setCrumbs($crumbs)
71 ->appendChild($view);
72
73 $nav->selectFilter('message');
74
75 return $this->newPage()
76 ->setTitle($title)
77 ->appendChild($nav);
78 }
79
80}