mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-28 04:00:17 +01:00
Summary: Creates a background that renders inside the Quicksand frame, through sorcery. Test Plan: Turn on Quicksand, visit lots of pages. See correct background colors. This probably blows something up I'm not testing. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D16642
164 lines
4.2 KiB
PHP
164 lines
4.2 KiB
PHP
<?php
|
|
|
|
final class PhabricatorConfigClusterNotificationsController
|
|
extends PhabricatorConfigController {
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$nav = $this->buildSideNavView();
|
|
$nav->selectFilter('cluster/notifications/');
|
|
|
|
$title = pht('Cluster Notifications');
|
|
$doc_href = PhabricatorEnv::getDoclink('Cluster: Notifications');
|
|
|
|
$header = id(new PHUIHeaderView())
|
|
->setHeader($title)
|
|
->setProfileHeader(true)
|
|
->addActionLink(
|
|
id(new PHUIButtonView())
|
|
->setIcon('fa-book')
|
|
->setHref($doc_href)
|
|
->setTag('a')
|
|
->setText(pht('Documentation')));
|
|
|
|
$crumbs = $this
|
|
->buildApplicationCrumbs($nav)
|
|
->addTextCrumb($title)
|
|
->setBorder(true);
|
|
|
|
$notification_status = $this->buildClusterNotificationStatus();
|
|
|
|
$content = id(new PhabricatorConfigPageView())
|
|
->setHeader($header)
|
|
->setContent($notification_status);
|
|
|
|
return $this->newPage()
|
|
->setTitle($title)
|
|
->setCrumbs($crumbs)
|
|
->setNavigation($nav)
|
|
->appendChild($content)
|
|
->addFrameClass('white-background');
|
|
}
|
|
|
|
private function buildClusterNotificationStatus() {
|
|
$viewer = $this->getViewer();
|
|
|
|
$servers = PhabricatorNotificationServerRef::newRefs();
|
|
Javelin::initBehavior('phabricator-tooltips');
|
|
|
|
$rows = array();
|
|
foreach ($servers as $server) {
|
|
if ($server->isAdminServer()) {
|
|
$type_icon = 'fa-database sky';
|
|
$type_tip = pht('Admin Server');
|
|
} else {
|
|
$type_icon = 'fa-bell sky';
|
|
$type_tip = pht('Client Server');
|
|
}
|
|
|
|
$type_icon = id(new PHUIIconView())
|
|
->setIcon($type_icon)
|
|
->addSigil('has-tooltip')
|
|
->setMetadata(
|
|
array(
|
|
'tip' => $type_tip,
|
|
));
|
|
|
|
$messages = array();
|
|
|
|
$details = array();
|
|
if ($server->isAdminServer()) {
|
|
try {
|
|
$details = $server->loadServerStatus();
|
|
$status_icon = 'fa-exchange green';
|
|
$status_label = pht('Version %s', idx($details, 'version'));
|
|
} catch (Exception $ex) {
|
|
$status_icon = 'fa-times red';
|
|
$status_label = pht('Connection Error');
|
|
$messages[] = $ex->getMessage();
|
|
}
|
|
} else {
|
|
try {
|
|
$server->testClient();
|
|
$status_icon = 'fa-exchange green';
|
|
$status_label = pht('Connected');
|
|
} catch (Exception $ex) {
|
|
$status_icon = 'fa-times red';
|
|
$status_label = pht('Connection Error');
|
|
$messages[] = $ex->getMessage();
|
|
}
|
|
}
|
|
|
|
if ($details) {
|
|
$uptime = idx($details, 'uptime');
|
|
$uptime = $uptime / 1000;
|
|
$uptime = phutil_format_relative_time_detailed($uptime);
|
|
|
|
$clients = pht(
|
|
'%s Active / %s Total',
|
|
new PhutilNumber(idx($details, 'clients.active')),
|
|
new PhutilNumber(idx($details, 'clients.total')));
|
|
|
|
$stats = pht(
|
|
'%s In / %s Out',
|
|
new PhutilNumber(idx($details, 'messages.in')),
|
|
new PhutilNumber(idx($details, 'messages.out')));
|
|
|
|
} else {
|
|
$uptime = null;
|
|
$clients = null;
|
|
$stats = null;
|
|
}
|
|
|
|
$status_view = array(
|
|
id(new PHUIIconView())->setIcon($status_icon),
|
|
' ',
|
|
$status_label,
|
|
);
|
|
|
|
$messages = phutil_implode_html(phutil_tag('br'), $messages);
|
|
|
|
$rows[] = array(
|
|
$type_icon,
|
|
$server->getProtocol(),
|
|
$server->getHost(),
|
|
$server->getPort(),
|
|
$status_view,
|
|
$uptime,
|
|
$clients,
|
|
$stats,
|
|
$messages,
|
|
);
|
|
}
|
|
|
|
$table = id(new AphrontTableView($rows))
|
|
->setNoDataString(
|
|
pht('No notification servers are configured.'))
|
|
->setHeaders(
|
|
array(
|
|
null,
|
|
pht('Proto'),
|
|
pht('Host'),
|
|
pht('Port'),
|
|
pht('Status'),
|
|
pht('Uptime'),
|
|
pht('Clients'),
|
|
pht('Messages'),
|
|
null,
|
|
))
|
|
->setColumnClasses(
|
|
array(
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
'wide',
|
|
));
|
|
|
|
return $table;
|
|
}
|
|
|
|
}
|