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