state = $state;
$this->permissionHandler = $permission_handler;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('config.factory'),
$container->get('state'),
$container->get('user.permissions')
);
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'system_site_maintenance_mode';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['system.maintenance'];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('system.maintenance');
$permissions = $this->permissionHandler->getPermissions();
$permission_label = $permissions['access site in maintenance mode']['title'];
$form['maintenance_mode'] = [
'#type' => 'checkbox',
'#title' => t('Put site into maintenance mode'),
'#default_value' => $this->state->get('system.maintenance_mode'),
'#description' => t('Visitors will only see the maintenance mode message. Only users with the "@permission-label" permission will be able to access the site. Authorized users can log in directly via the user login page.', ['@permission-label' => $permission_label, ':permissions-url' => $this->url('user.admin_permissions'), ':user-login' => $this->url('user.login')]),
];
$form['maintenance_mode_message'] = [
'#type' => 'textarea',
'#title' => t('Message to display when in maintenance mode'),
'#default_value' => $config->get('message'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->config('system.maintenance')
->set('message', $form_state->getValue('maintenance_mode_message'))
->save();
$this->state->set('system.maintenance_mode', $form_state->getValue('maintenance_mode'));
parent::submitForm($form, $form_state);
}
}