1
|
<?php
|
2
|
|
3
|
/**
|
4
|
* @file
|
5
|
* Generate form elments for the Panel and Gpanel Reponsive Layout settings.
|
6
|
*/
|
7
|
function at_core_responsive_panels_form(&$form, $theme_name, $info_array) {
|
8
|
// Supported devices
|
9
|
$devices = array(
|
10
|
'bigscreen',
|
11
|
'tablet_landscape',
|
12
|
'tablet_portrait',
|
13
|
'smalltouch_landscape',
|
14
|
);
|
15
|
|
16
|
// Get the configuration array for panel layouts
|
17
|
$rpl = responsive_panels_data_structure();
|
18
|
|
19
|
// Check if panels exists
|
20
|
$panels = module_exists('panels') ? TRUE : FALSE;
|
21
|
|
22
|
// Set variables here for active Gpanels, we need to test on this later
|
23
|
$active_gpanels = array();
|
24
|
$active_gpanels_arrays = array();
|
25
|
|
26
|
// Build a keyed array of the regions, we need to reset the keys for
|
27
|
// array_intersect() to figure out which Gpanels are being used
|
28
|
foreach ($info_array['regions'] as $key => $value) {
|
29
|
$theme_regions[] = $key;
|
30
|
}
|
31
|
|
32
|
// Get the standard Gpanel regions list
|
33
|
$gpanel_regions = gpanel_regions();
|
34
|
|
35
|
// Figure out which gpanels are actually being used in the theme
|
36
|
$active_gpanels = array();
|
37
|
foreach ($gpanel_regions as $gpanel => $gpanel_array) {
|
38
|
if (array_intersect($theme_regions, $gpanel_array['regions'])) {
|
39
|
$active_gpanels[] = $gpanel;
|
40
|
$active_gpanels_arrays[] = $gpanel_array;
|
41
|
}
|
42
|
}
|
43
|
|
44
|
// Make certain we only list each Gpanel once
|
45
|
array_unique($active_gpanels);
|
46
|
|
47
|
// Make a list of all active Gpanel titles, if any
|
48
|
$used_gpanels = '';
|
49
|
if (!empty($active_gpanels)) {
|
50
|
foreach ($active_gpanels_arrays as $active_gpanel) {
|
51
|
$gpanels_titles[] = $active_gpanel['title'];
|
52
|
}
|
53
|
$used_gpanels = t('<p>Your theme currently uses these Gpanels:</p>!used_gpanels', array('!used_gpanels' => theme('item_list', array('items' => $gpanels_titles))));
|
54
|
}
|
55
|
|
56
|
// Get all standard Plugin layout names
|
57
|
foreach ($rpl as $rpl_key => $values) {
|
58
|
foreach ($values as $value) {
|
59
|
foreach ($value as $k => $v) {
|
60
|
$active_rpl[] = $v['theme'];
|
61
|
$active_types[] = $v['type'];
|
62
|
}
|
63
|
}
|
64
|
}
|
65
|
|
66
|
// This is will not be sustaintable, what I need is a function that sorts the
|
67
|
// layouts properly, alphabetical is no good, it needs to be in a very precise
|
68
|
// order to make sense in the UI.
|
69
|
if (isset($rpl['one'])) {
|
70
|
unset($rpl['one']);
|
71
|
}
|
72
|
if (isset($rpl['six'])) {
|
73
|
$six = $rpl['six']; unset($rpl['six']); $rpl['six'] = $six;
|
74
|
}
|
75
|
if (isset($rpl['inset'])) {
|
76
|
$inset = $rpl['inset']; unset($rpl['inset']); $rpl['inset'] = $inset;
|
77
|
}
|
78
|
|
79
|
// Get the admin css files for each plugin
|
80
|
$panels_admin_css_files = responsive_plugins_admin_css($theme_name, $plugin_type = 'panels');
|
81
|
foreach ($panels_admin_css_files as $filepath) {
|
82
|
if (file_exists($filepath)) {
|
83
|
$panels_css_files['css'][] = array('type' => 'file', 'data' => $filepath, 'weight' => 100);
|
84
|
}
|
85
|
}
|
86
|
|
87
|
// Set title and message
|
88
|
$panels_title = t('Panels & Gpanels');
|
89
|
$panels_message = t('<h3>!panels_title</h3><p>Adaptivetheme supports responsive Panels and Gpanel layouts. To use this capability you can use the <a href="!panels_link" target="_blank">Panels module</a>, <a href="!ds_link" target="_blank">Display Suite</a> (with Panels) or Adaptivethemes native <a href="!gpanels_link" target="_blank">Gpanels</a> layouts. To views all layouts on one page and test your settings you can enable the panels test, see the Debuggers tab.</p><p><b>Usage:</b> select options for each device range and layout type.</p>!gpanels_message', array('!panels_title' => $panels_title, '!panels_link' => 'http://drupal.org/project/panels', '!gpanels_link' => 'http://adaptivethemes.com/documentation/using-gpanels', '!ds_link' => 'http://drupal.org/project/ds', '!gpanels_message' => $used_gpanels));
|
90
|
|
91
|
// Gpanels and Panels top level wrapper
|
92
|
$form['at-settings']['panels'] = array(
|
93
|
'#type' => 'fieldset',
|
94
|
'#title' => $panels_title,
|
95
|
'#description' => $panels_message,
|
96
|
'#attached' => $panels_css_files,
|
97
|
);
|
98
|
|
99
|
// Disabled message
|
100
|
$panels_disable_message = t('<p>The responsive layout is disabled, only the default layout for each Gpanel and Panel layout will be used.</p><p>To re-enable uncheck the "Disable responsive layout and styles" checkbox under the "Global Settings" tab.</p>');
|
101
|
|
102
|
if(at_get_setting('disable_responsive_styles') === 1) {
|
103
|
$form['at-settings']['panels']['disabled'] = array(
|
104
|
'#markup' => '<div class="messages warning">' . $panels_disable_message . '</div>',
|
105
|
);
|
106
|
}
|
107
|
|
108
|
$form['at-settings']['panels']['panels-wrapper'] = array(
|
109
|
'#type' => 'fieldset',
|
110
|
'#attributes' => array('class' => array('panel-option-lists')),
|
111
|
'#states' => array(
|
112
|
'disabled' => array('input[name="disable_responsive_styles"]' => array('checked' => TRUE)),
|
113
|
),
|
114
|
);
|
115
|
|
116
|
foreach ($devices as $device) {
|
117
|
$title = str_replace('_', ' ', drupal_ucfirst($device));
|
118
|
if ($device == 'bigscreen') {
|
119
|
$title = 'Standard layout';
|
120
|
}
|
121
|
$form['at-settings']['panels']['panels-wrapper'][$device] = array(
|
122
|
'#type' => 'fieldset',
|
123
|
'#title' => t($title),
|
124
|
'#collapsible' => TRUE,
|
125
|
'#collapsed' => TRUE,
|
126
|
'#description' => t('Select the layouts you want to use when the site is being viewed in !device.', array('!device' => strtolower($title))),
|
127
|
);
|
128
|
if (isset($rpl)) {
|
129
|
foreach ($rpl as $group => $layouts) {
|
130
|
if (!empty($layouts)) {
|
131
|
$form['at-settings']['panels']['panels-wrapper'][$device][$group] = array(
|
132
|
'#type' => 'fieldset',
|
133
|
'#title' => t($group),
|
134
|
'#collapsible' => TRUE,
|
135
|
'#collapsed' => TRUE,
|
136
|
);
|
137
|
foreach ($layouts as $layout) {
|
138
|
foreach ($layout as $key => $value) {
|
139
|
if (isset($value['theme'])) {
|
140
|
$default_value = at_get_setting($device . '_' . $value['theme']);
|
141
|
// Add a check for backwards compatibility with pre 7.x-3.2 themes
|
142
|
if ($device == 'smalltouch_landscape') {
|
143
|
$default_value = at_get_setting('smalltouch_landscape_' . $value['theme']) ? at_get_setting('smalltouch_landscape_' . $value['theme']) : at_get_setting('smartphone_landscape_' . $value['theme']);
|
144
|
}
|
145
|
$form['at-settings']['panels']['panels-wrapper'][$device][$group][$device . '_' . $value['theme']] = array(
|
146
|
'#type' => 'radios',
|
147
|
'#title' => t($value['title']),
|
148
|
'#default_value' => $default_value,
|
149
|
'#options' => $value['options'],
|
150
|
);
|
151
|
}
|
152
|
}
|
153
|
}
|
154
|
}
|
155
|
}
|
156
|
}
|
157
|
}
|
158
|
}
|