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); } }