advanced_maintenance_page-1.0.0/advanced_maintenance_page.module
advanced_maintenance_page.module
<?php use Drupal\Core\Form\FormStateInterface; use Drupal\file\Entity\File; /** * Implements hook_form_alter(). */ function advanced_maintenance_page_form_alter(&$form, FormStateInterface $form_state, $form_id) { if($form_id == 'system_site_maintenance_mode') { $config = \Drupal::config('system.maintenance'); $form['enable_advanced_options'] = array( '#type' => 'checkbox', '#title' => t('Enable advanced options'), '#description' => t('Gives advanced options in maintenance page'), '#default_value' => $config->get('enable_advanced_options') ); $form['advanced_maintenance_page'] = array( '#type' => 'details', '#title' => t('Advanced Maintenance Page'), '#open' => TRUE, '#tree' => TRUE, '#states' => array( 'visible' => array( array( ':input[name="enable_advanced_options"]' => array('checked' => TRUE) ), ), ), ); $form['advanced_maintenance_page']['display_site_logo'] = array( '#type' => 'checkbox', '#title' => t('Display Site Logo'), '#description' => t('Display site logo in maintenance page'), '#default_value' => $config->get('display_site_logo') ); $form['advanced_maintenance_page']['display_site_name'] = array( '#type' => 'checkbox', '#title' => t('Display Site Name'), '#description' => t('Display site name in maintenance page'), '#default_value' => $config->get('display_site_name') ); $form['advanced_maintenance_page']['display_site_slogan'] = array( '#type' => 'checkbox', '#title' => t('Display Site Slogan'), '#description' => t('Display site slogan in maintenance page'), '#default_value' => $config->get('display_site_slogan') ); $form['advanced_maintenance_page']['background_image_wrapper'] = array( '#type' => 'details', '#title' => t('Background Image'), '#open' => TRUE, '#tree' => TRUE, ); $form['advanced_maintenance_page']['background_image_wrapper']['custom_background_image'] = array( '#title' => t('Upload the custom background image'), '#type' => 'managed_file', '#description' => t('Supports .gif .png .jpg .jpeg files'), '#upload_location' => 'public://advanced_maintenance_page', '#default_value' => $config->get('custom_background_image'), '#upload_validators' => array( 'file_validate_extensions' => array('gif png jpg jpeg'), ), ); $form['advanced_maintenance_page']['background_msg_wrapper'] = array( '#type' => 'details', '#title' => t('Background Message'), '#open' => TRUE, '#tree' => TRUE, ); $form['advanced_maintenance_page']['background_msg_wrapper']['custom_maintenance_message'] = array( '#type' => 'text_format', '#title' => t('Message to display when in maintenance mode'), '#description' => t('Message to display when in maintenance mode.'), '#format' => $config->get('custom_maintenance_message.format'), '#default_value' => $config->get('custom_maintenance_message.value'), ); $form['advanced_maintenance_page']['background_msg_wrapper']['position_maintenance_message'] = array( '#type' => 'select', '#title' => t('Position of maintenance message'), '#options' => array( 'left' => t('Left'), 'center' => t('Center'), 'right' => t('Right'), ), '#default_value' => $config->get('position_maintenance_message'), ); $form['maintenance_mode_message']['#states'] = array( 'visible' => array( array( ':input[name="enable_advanced_options"]' => array('checked' => FALSE) ), ), ); $form['#submit'][] = 'advanced_maintenance_page_submit'; } } function advanced_maintenance_page_submit(&$form, FormStateInterface $form_state) { // dpm($form_state->getValue('advanced_maintenance_page')); $config = \Drupal::service('config.factory')->getEditable('system.maintenance'); $values = $form_state->getValue('advanced_maintenance_page'); $config->set('enable_advanced_options', $form_state->getValue('enable_advanced_options')) ->set('display_site_logo', $values['display_site_logo']) ->set('display_site_name', $values['display_site_name']) ->set('display_site_slogan', $values['display_site_slogan']) ->set('custom_background_image', $values['background_image_wrapper']['custom_background_image']) ->set('custom_maintenance_message.value', $values['background_msg_wrapper']['custom_maintenance_message']['value']) ->set('custom_maintenance_message.format', $values['background_msg_wrapper']['custom_maintenance_message']['format']) ->set('position_maintenance_message', $values['background_msg_wrapper']['position_maintenance_message']) ->save(); $file = !empty($values['background_image_wrapper']['custom_background_image'][0]) ? File::load($values['background_image_wrapper']['custom_background_image'][0]) : NULL; if (!empty($file)) { $file->setPermanent(); $file->save(); } } /** * Implements hook_preprocess_html(). */ function advanced_maintenance_page_preprocess_html(array &$variables) { $config = \Drupal::config('system.maintenance'); if($config->get('enable_advanced_options')) { $variables['#attached']['library'][] = 'advanced_maintenance_page/advanced_maintenance_page'; } } /** * Implements hook_theme_registry_alter(). */ function advanced_maintenance_page_theme_registry_alter(&$theme_registry) { $config = \Drupal::config('system.maintenance'); if($config->get('enable_advanced_options')) { $theme_registry['maintenance_page']['path'] = \Drupal::service('extension.list.module')->getPath('advanced_maintenance_page') . '/templates'; } } /** * Implements hook_preprocess_html(). */ function advanced_maintenance_page_preprocess(&$variables) { $config = \Drupal::config('system.maintenance'); $variables['display_site_logo'] = $config->get('display_site_logo'); $variables['display_site_name'] = $config->get('display_site_name'); $variables['display_site_slogan'] = $config->get('display_site_slogan'); $variables['enable_advanced_options'] = $config->get('enable_advanced_options'); $variables['maintenance_message'] = $config->get('custom_maintenance_message.value'); $variables['position_maintenance_message'] = $config->get('position_maintenance_message'); $fid = ($config->get('custom_background_image')[0]); if (!empty($fid)) { $file = File::load($fid); if (!empty($file)) { $url = $file->getFileURI(); $file_url = $file->createFileUrl(); $variables['file_url'] = $file_url; } } $variables['#cache']['max-age'] = 0; } ?>