-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstorm_cms_layout_builder.module
More file actions
97 lines (83 loc) · 3.16 KB
/
storm_cms_layout_builder.module
File metadata and controls
97 lines (83 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/**
* @file
* Primary module hooks for storm_cms_layout_builder module.
*/
use Drupal\Component\Serialization\Json;
use Drupal\Core\Form\FormStateInterface;
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
function storm_cms_layout_builder_form_node_layout_builder_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form['#attributes']['class'][] = 'storm-cms-layout-builder-form';
$form['#attached']['library'][] = 'storm_cms_layout_builder/form';
unset($form['revision_information']);
$form['actions']['#weight'] = 200;
$form['actions']['#attributes']['class'][] = 'storm-cms-layout-builder-form-actions';
$form['actions']['preview_toggle']['#weight'] = -1;
$form['revision']['#access'] = FALSE;
$form['moderation_state']['#access'] = FALSE;
}
/**
* Implements hook_link_alter().
*/
function storm_cms_layout_builder_link_alter(&$variables) {
/** @var Drupal\Core\Url $url */
$url = $variables['url'];
$config = \Drupal::config('layout_builder_modal.settings');
if (!$url->isRouted()) {
return;
}
$routes = [
'section_library.add_template_to_library',
'section_library.add_section_to_library'
];
if (in_array($url->getRouteName(), $routes) && isset($config)) {
$data_dialog_options = Json::encode([
'width' => $config->get('modal_width'),
'height' => $config->get('modal_height'),
'target' => 'layout-builder-modal',
'autoResize' => $config->get('modal_autoresize'),
'modal' => TRUE,
]);
$variables['options']['attributes']['data-dialog-options'] = $data_dialog_options;
$variables['options']['attributes']['data-dialog-type'] = 'dialog';
unset($variables['options']['attributes']['data-dialog-renderer']);
}
}
/**
* Implements hook_preprocess_layout().
*/
function storm_cms_layout_builder_preprocess_layout(&$variables) {
$classes = [];
$settings = $variables['settings']['storm_cms_layout_builder'] ?? '';
if ($variables['settings']) {
if(isset($settings['section_background']) || isset($settings['padding']) || isset($settings['spacing']) || isset($settings['section_theme']['styles'])) {
// Merge all modifier classes.
$classes = array_merge($classes,
$settings['section_background'],
$settings['padding'],
$settings['spacing'],
$settings['section_theme']['styles']
);
}
// Set section attributes.
if (isset($settings['section_attributes'])) {
if (isset($settings['section_attributes']['id']) && $settings['section_attributes']['id'] !== '') {
$variables['attributes']['id'] = $settings['section_attributes']['id'];
}
if (isset($settings['section_attributes']['data']) && $settings['section_attributes']['data'] !== '') {
$data_attrs = $settings['section_attributes']['data'];
$data_attrs = preg_split('/\R/', $data_attrs);
foreach ($data_attrs as $data_attr) {
$data_attr = explode('|', $data_attr);
$variables['attributes'][$data_attr[0]] = $data_attr[1] ?? TRUE;
}
}
}
$classes = array_filter($classes, fn ($m) => $m != 'none');
}
foreach ($classes as $class) {
$variables['attributes']['class'][] = $class;
}
}