Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
novicell/dds_better_backend / dds_better_backend.module
Size: Mime:
<?php

/**
 * @file
 * Contains dds_better_backend.module.
 */

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function dds_better_backend_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the dds_better_backend module.
    case 'help.page.dds_better_backend':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Functionality to increase the user experience in the backend.') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_locale_translation_projects_alter().
 */
function dds_better_backend_locale_translation_projects_alter(&$projects) {
  $module_handler = \Drupal::service('module_handler');
  $path = $module_handler->getModule('dds_better_backend')->getPath();
  $projects['dds_better_backend']['info']['interface translation server pattern'] = $path.'/translations/%language.po';
}

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function dds_better_backend_form_node_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $config = \Drupal::config('dds_better_backend.settings');
  // Advanced sidebar config
  $advanced_sidebar = $config->get('advanced_sidebar');
  if (empty($advanced_sidebar)) {
    $advanced_sidebar = [
      'default_value' => 'open',
    ];
  }

  $type = substr($form_id, 5, strlen($form_id) -10);
  $state = $advanced_sidebar['default_value'];
  if (!empty($advanced_sidebar['type_overrides'][$type])) {
    $state = $advanced_sidebar['type_overrides'][$type];
  }

  $form['advanced_sidebar'] = [
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'advanced-sidebar'
      ]
    ],
  ];
  $form['advanced_sidebar']['title'] = [
    '#type' => 'html_tag',
    '#tag' => 'h3',
    'title' => [
      '#markup' => t('Advanced')
    ],
    'close' => [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#attributes' => [
        'class' => [
          'close-button'
        ],
      ],
      '#value' => '&#10006;'
    ],
  ];
  $form['advanced_sidebar']['always_shown'] = [
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'sidebar-content__always-shown'
      ]
    ]
  ];

  $form['advanced']['#group'] = 'advanced_sidebar';
  $form['published_at']['#group'] = 'always_shown';

  $form['revision_details'] = [
    '#type' => 'details',
    '#group' => 'advanced',
    '#title' => t('Revision'),
    '#attributes' => [
      'class' => [
        'revision-details'
      ]
    ],
    '#weight' => -100
  ];

  $form['revision']['#group'] = 'revision_details';
  $form['revision_log']['#group'] = 'revision_details';

  $form['meta']['#group'] = 'footer';
  $form['meta']['published']['#type'] = 'hidden';

  $form['additional_settings'] = [
    '#type' => 'container',
    '#group' => 'footer',
    '#weight' => -20,
    '#attributes' => [
      'class' => [
        'advanced-wrapper'
      ]
    ],
    'link' => [
      '#type' => 'html_tag',
      '#tag' => 'a',
      '#attributes' => [
        'class' => [
          'advanced-settings-link',
          'js-trigger-advanced',
          'button'
        ],
      ],
      '#value' => t('Advanced'),
    ]
  ];

  $form['#attached']['drupalSettings']['better_backend']['advanced_sidebar']['state'] = $state;
  $form['#attached']['library'][] = "dds_better_backend/better-backend";
}

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function dds_better_backend_form_node_type_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $config = \Drupal::config('dds_better_backend.settings');
  // Advanced sidebar config
  $advanced_sidebar = $config->get('advanced_sidebar');
  if (empty($advanced_sidebar)) {
    $advanced_sidebar = [
      'default_value' => 'open',
    ];
  }

  $default_value = $advanced_sidebar['default_value'];
  if (!empty($advanced_sidebar['type_overrides'][$form['type']['#default_value']])) {
    $default_value = $advanced_sidebar['type_overrides'][$form['type']['#default_value']];
  }

  $form['submission']['advanced_open'] = [
    '#type' => 'radios',
    '#title' => t('Advanced sidebar'),
    '#default_value' => $default_value,
    '#options' => [
      'open' => t('Open by default'),
      'closed' => t('Closed by default')
    ]
  ];


  $form['#submit'][] = '_submit_node_type_form';

  foreach (array_keys($form['actions']) as $action) {
    if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
      $form['actions'][$action]['#submit'][] = '_submit_node_type_form';
    }
  }
}

function _submit_node_type_form(array &$form, FormStateInterface $form_state) {
  $values = $form_state->cleanValues()->getValues();

  $config = \Drupal::service('config.factory')->getEditable('dds_better_backend.settings');

  // Advanced sidebar config
  $advanced_sidebar = $config->get('advanced_sidebar');
  if (empty($advanced_sidebar)) {
    $advanced_sidebar = [
      'default_value' => 'open',
    ];
  }

  if (!empty($values['type']) && !empty($values['advanced_open'])) {
    if ($values['advanced_open'] !== $advanced_sidebar['default_value']) {
      $advanced_sidebar['type_overrides'][$values['type']] = $values['advanced_open'];
    } else {
      unset($advanced_sidebar['type_overrides'][$values['type']]);
    }
  }

  $config->set('advanced_sidebar', $advanced_sidebar)
    ->save();
}

/**
 * Implements hook_module_implements_alter().
 */
function dds_better_backend_module_implements_alter(&$implementations, $hook) {
  switch ($hook) {
    // Move our hook_form_alter() implementation to the end of the list.
    case 'form_alter':
      if (isset($implementations['dds_better_backend'])) {
        $group = $implementations['dds_better_backend'];
        unset($implementations['dds_better_backend']);
        $implementations['dds_better_backend'] = $group;
      }
      break;
  }
}