-
Notifications
You must be signed in to change notification settings - Fork 0
/
tabled.module
120 lines (103 loc) · 3.26 KB
/
tabled.module
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
/**
* @file
* Bundle and activate the Tabled plugin.
*/
/**
* Implements hook_menu().
*/
function tabled_menu() {
$items = array();
$items['admin/config/user-interface/tabled'] = array(
'title' => 'Tabled',
'description' => 'Configuration for Tabled module',
'page callback' => 'backdrop_get_form',
'page arguments' => array('tabled_admin_settings'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Implements hook_config_info().
*/
function tabled_config_info() {
$config = array();
$config['tabled.settings'] = array(
'label' => t('Tabled settings'),
'group' => t('Configuration'),
);
return $config;
}
/**
* Implements hook_library_info().
*
*/
function tabled_library_info() {
$path = backdrop_get_path('module', 'tabled') . '/';
$libraries['tabled'] = array(
'title' => 'Tabled',
'website' => 'https://github.com/Lullabot/tabled',
'version' => '1.0.1',
'js' => array(
$path . 'library/dist/tabled.min.js' => array(),
),
'css' => array(
$path . 'library/dist/styles.css' => array(),
),
);
return $libraries;
}
/**
* Configuraton form.
*/
function tabled_admin_settings($form, &$form_state) {
$config = config('tabled.settings');
// Add a checkbox for whether to include library's theme CSS.
$form['#config'] = 'tabled.settings';
$form['add_theme_css'] = array(
'#type' => 'checkbox',
'#title' => t('Include Tabled library theme CSS'),
'#default_value' => $config->get('add_theme_css'),
'#description' => t('Check this box to include the Tabled theme CSS. This is optional as the library\'s core CSS will be loaded either way.'),
);
$form['excluded_selectors'] = array(
'#type' => 'textarea',
'#title' => t('Excluded selectors'),
'#default_value' => $config->get('excluded_selectors'),
'#rows' => 3,
'#description' => t('By default, Tabled will not be applied to any table with the <code>untabled</code> CSS class. You can add additional jQuery selectors here to exclude additional tables. Use a new line for each selector.'),
);
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save Configuration'),
);
return system_settings_form($form);
}
/**
* Implements hook_preprocess_page().
*/
function tabled_preprocess_page(&$variables) {
// Performance: Skip this entirely for AJAX requests.
if (!backdrop_is_html()) {
return;
}
$current_path = current_path();
if (!path_is_admin($current_path)) {
$config = config('tabled.settings');
// Get tabled excluded selectors.
$excluded_selectors = $config->get('excluded_selectors');
$excluded_selectors_array = explode(PHP_EOL, $excluded_selectors);
// Export the variables to Backdrop.settings.
backdrop_add_js(array('tabled' => array(
'excluded_selectors' => $excluded_selectors_array,
)), 'setting');
$module_path = backdrop_get_path('module', 'tabled') . '/';
backdrop_add_library('tabled', 'tabled');
if ($config->get('add_theme_css')) {
backdrop_add_css($module_path . 'library/dist/theme.css');
}
backdrop_add_js($module_path . 'js/tabled_init.js', array('scope' => 'footer'));
}
}