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

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc