Repository URL to install this package:
|
Version:
1.0.3 ▾
|
novicell/dds_better_backend
/
dds_better_backend.module
|
|---|
<?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' => '✖'
],
];
$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;
}
}