webmaster@1
|
1 <?php |
webmaster@15
|
2 // $Id: block.admin.inc,v 1.14.2.5 2008/11/24 06:00:02 dries Exp $ |
webmaster@1
|
3 |
webmaster@1
|
4 /** |
webmaster@1
|
5 * @file |
webmaster@1
|
6 * Admin page callbacks for the block module. |
webmaster@1
|
7 */ |
webmaster@1
|
8 |
webmaster@1
|
9 /** |
webmaster@1
|
10 * Menu callback for admin/build/block. |
webmaster@1
|
11 */ |
webmaster@1
|
12 function block_admin_display($theme = NULL) { |
webmaster@1
|
13 global $custom_theme; |
webmaster@1
|
14 |
webmaster@1
|
15 // If non-default theme configuration has been selected, set the custom theme. |
webmaster@1
|
16 $custom_theme = isset($theme) ? $theme : variable_get('theme_default', 'garland'); |
webmaster@1
|
17 |
webmaster@1
|
18 // Fetch and sort blocks |
webmaster@1
|
19 $blocks = _block_rehash(); |
webmaster@1
|
20 usort($blocks, '_block_compare'); |
webmaster@1
|
21 |
webmaster@1
|
22 return drupal_get_form('block_admin_display_form', $blocks, $theme); |
webmaster@1
|
23 } |
webmaster@1
|
24 |
webmaster@1
|
25 /** |
webmaster@1
|
26 * Generate main blocks administration form. |
webmaster@1
|
27 */ |
webmaster@1
|
28 function block_admin_display_form(&$form_state, $blocks, $theme = NULL) { |
webmaster@1
|
29 global $theme_key, $custom_theme; |
webmaster@1
|
30 |
webmaster@1
|
31 // Add CSS |
webmaster@1
|
32 drupal_add_css(drupal_get_path('module', 'block') .'/block.css', 'module', 'all', FALSE); |
webmaster@1
|
33 |
webmaster@1
|
34 // If non-default theme configuration has been selected, set the custom theme. |
webmaster@1
|
35 $custom_theme = isset($theme) ? $theme : variable_get('theme_default', 'garland'); |
webmaster@1
|
36 init_theme(); |
webmaster@1
|
37 |
webmaster@1
|
38 $throttle = module_exists('throttle'); |
webmaster@1
|
39 $block_regions = system_region_list($theme_key) + array(BLOCK_REGION_NONE => '<'. t('none') .'>'); |
webmaster@1
|
40 |
webmaster@15
|
41 // Weights range from -delta to +delta, so delta should be at least half |
webmaster@15
|
42 // of the amount of blocks present. This makes sure all blocks in the same |
webmaster@15
|
43 // region get an unique weight. |
webmaster@15
|
44 $weight_delta = round(count($blocks) / 2); |
webmaster@15
|
45 |
webmaster@1
|
46 // Build form tree |
webmaster@1
|
47 $form = array( |
webmaster@15
|
48 '#action' => arg(4) ? url('admin/build/block/list/'. $theme_key) : url('admin/build/block'), |
webmaster@1
|
49 '#tree' => TRUE, |
webmaster@1
|
50 ); |
webmaster@1
|
51 |
webmaster@1
|
52 foreach ($blocks as $i => $block) { |
webmaster@1
|
53 $key = $block['module'] .'_'. $block['delta']; |
webmaster@1
|
54 $form[$key]['module'] = array( |
webmaster@1
|
55 '#type' => 'value', |
webmaster@1
|
56 '#value' => $block['module'], |
webmaster@1
|
57 ); |
webmaster@1
|
58 $form[$key]['delta'] = array( |
webmaster@1
|
59 '#type' => 'value', |
webmaster@1
|
60 '#value' => $block['delta'], |
webmaster@1
|
61 ); |
webmaster@1
|
62 $form[$key]['info'] = array( |
webmaster@1
|
63 '#value' => check_plain($block['info']) |
webmaster@1
|
64 ); |
webmaster@1
|
65 $form[$key]['theme'] = array( |
webmaster@1
|
66 '#type' => 'hidden', |
webmaster@1
|
67 '#value' => $theme_key |
webmaster@1
|
68 ); |
webmaster@1
|
69 $form[$key]['weight'] = array( |
webmaster@1
|
70 '#type' => 'weight', |
webmaster@1
|
71 '#default_value' => $block['weight'], |
webmaster@15
|
72 '#delta' => $weight_delta, |
webmaster@1
|
73 ); |
webmaster@1
|
74 $form[$key]['region'] = array( |
webmaster@1
|
75 '#type' => 'select', |
webmaster@1
|
76 '#default_value' => $block['region'], |
webmaster@1
|
77 '#options' => $block_regions, |
webmaster@1
|
78 ); |
webmaster@1
|
79 |
webmaster@1
|
80 if ($throttle) { |
webmaster@1
|
81 $form[$key]['throttle'] = array('#type' => 'checkbox', '#default_value' => isset($block['throttle']) ? $block['throttle'] : FALSE); |
webmaster@1
|
82 } |
webmaster@1
|
83 $form[$key]['configure'] = array('#value' => l(t('configure'), 'admin/build/block/configure/'. $block['module'] .'/'. $block['delta'])); |
webmaster@1
|
84 if ($block['module'] == 'block') { |
webmaster@1
|
85 $form[$key]['delete'] = array('#value' => l(t('delete'), 'admin/build/block/delete/'. $block['delta'])); |
webmaster@1
|
86 } |
webmaster@1
|
87 } |
webmaster@1
|
88 |
webmaster@1
|
89 $form['submit'] = array( |
webmaster@1
|
90 '#type' => 'submit', |
webmaster@1
|
91 '#value' => t('Save blocks'), |
webmaster@1
|
92 ); |
webmaster@1
|
93 |
webmaster@1
|
94 return $form; |
webmaster@1
|
95 } |
webmaster@1
|
96 |
webmaster@1
|
97 /** |
webmaster@1
|
98 * Process main blocks administration form submission. |
webmaster@1
|
99 */ |
webmaster@1
|
100 function block_admin_display_form_submit($form, &$form_state) { |
webmaster@1
|
101 foreach ($form_state['values'] as $block) { |
webmaster@1
|
102 $block['status'] = $block['region'] != BLOCK_REGION_NONE; |
webmaster@1
|
103 $block['region'] = $block['status'] ? $block['region'] : ''; |
webmaster@1
|
104 db_query("UPDATE {blocks} SET status = %d, weight = %d, region = '%s', throttle = %d WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $block['status'], $block['weight'], $block['region'], isset($block['throttle']) ? $block['throttle'] : 0, $block['module'], $block['delta'], $block['theme']); |
webmaster@1
|
105 } |
webmaster@1
|
106 drupal_set_message(t('The block settings have been updated.')); |
webmaster@1
|
107 cache_clear_all(); |
webmaster@1
|
108 } |
webmaster@1
|
109 |
webmaster@1
|
110 /** |
webmaster@1
|
111 * Helper function for sorting blocks on admin/build/block. |
webmaster@1
|
112 * |
webmaster@1
|
113 * Active blocks are sorted by region, then by weight. |
webmaster@1
|
114 * Disabled blocks are sorted by name. |
webmaster@1
|
115 */ |
webmaster@1
|
116 function _block_compare($a, $b) { |
webmaster@1
|
117 global $theme_key; |
webmaster@1
|
118 static $regions; |
webmaster@1
|
119 |
webmaster@1
|
120 // We need the region list to correctly order by region. |
webmaster@1
|
121 if (!isset($regions)) { |
webmaster@1
|
122 $regions = array_flip(array_keys(system_region_list($theme_key))); |
webmaster@1
|
123 $regions[BLOCK_REGION_NONE] = count($regions); |
webmaster@1
|
124 } |
webmaster@1
|
125 |
webmaster@1
|
126 // Separate enabled from disabled. |
webmaster@1
|
127 $status = $b['status'] - $a['status']; |
webmaster@1
|
128 if ($status) { |
webmaster@1
|
129 return $status; |
webmaster@1
|
130 } |
webmaster@1
|
131 // Sort by region (in the order defined by theme .info file). |
webmaster@3
|
132 if ((!empty($a['region']) && !empty($b['region'])) && ($place = ($regions[$a['region']] - $regions[$b['region']]))) { |
webmaster@1
|
133 return $place; |
webmaster@1
|
134 } |
webmaster@1
|
135 // Sort by weight. |
webmaster@1
|
136 $weight = $a['weight'] - $b['weight']; |
webmaster@1
|
137 if ($weight) { |
webmaster@1
|
138 return $weight; |
webmaster@1
|
139 } |
webmaster@1
|
140 // Sort by title. |
webmaster@1
|
141 return strcmp($a['info'], $b['info']); |
webmaster@1
|
142 } |
webmaster@1
|
143 |
webmaster@1
|
144 /** |
webmaster@1
|
145 * Menu callback; displays the block configuration form. |
webmaster@1
|
146 */ |
webmaster@1
|
147 function block_admin_configure(&$form_state, $module = NULL, $delta = 0) { |
webmaster@1
|
148 |
webmaster@1
|
149 $form['module'] = array('#type' => 'value', '#value' => $module); |
webmaster@1
|
150 $form['delta'] = array('#type' => 'value', '#value' => $delta); |
webmaster@1
|
151 |
webmaster@1
|
152 $edit = db_fetch_array(db_query("SELECT pages, visibility, custom, title FROM {blocks} WHERE module = '%s' AND delta = '%s'", $module, $delta)); |
webmaster@1
|
153 |
webmaster@1
|
154 $form['block_settings'] = array( |
webmaster@1
|
155 '#type' => 'fieldset', |
webmaster@1
|
156 '#title' => t('Block specific settings'), |
webmaster@1
|
157 '#collapsible' => TRUE, |
webmaster@1
|
158 ); |
webmaster@1
|
159 $form['block_settings']['title'] = array( |
webmaster@1
|
160 '#type' => 'textfield', |
webmaster@1
|
161 '#title' => t('Block title'), |
webmaster@1
|
162 '#maxlength' => 64, |
webmaster@1
|
163 '#description' => $module == 'block' ? t('The title of the block as shown to the user.') : t('Override the default title for the block. Use <em><none></em> to display no title, or leave blank to use the default block title.'), |
webmaster@1
|
164 '#default_value' => $edit['title'], |
webmaster@1
|
165 '#weight' => -18, |
webmaster@1
|
166 ); |
webmaster@1
|
167 |
webmaster@1
|
168 |
webmaster@1
|
169 // Module-specific block configurations. |
webmaster@1
|
170 if ($settings = module_invoke($module, 'block', 'configure', $delta)) { |
webmaster@1
|
171 foreach ($settings as $k => $v) { |
webmaster@1
|
172 $form['block_settings'][$k] = $v; |
webmaster@1
|
173 } |
webmaster@1
|
174 } |
webmaster@1
|
175 |
webmaster@1
|
176 // Get the block subject for the page title. |
webmaster@1
|
177 $info = module_invoke($module, 'block', 'list'); |
webmaster@1
|
178 if (isset($info[$delta])) { |
webmaster@1
|
179 drupal_set_title(t("'%name' block", array('%name' => $info[$delta]['info']))); |
webmaster@1
|
180 } |
webmaster@1
|
181 |
webmaster@1
|
182 // Standard block configurations. |
webmaster@1
|
183 $form['user_vis_settings'] = array( |
webmaster@1
|
184 '#type' => 'fieldset', |
webmaster@1
|
185 '#title' => t('User specific visibility settings'), |
webmaster@1
|
186 '#collapsible' => TRUE, |
webmaster@1
|
187 ); |
webmaster@1
|
188 $form['user_vis_settings']['custom'] = array( |
webmaster@1
|
189 '#type' => 'radios', |
webmaster@1
|
190 '#title' => t('Custom visibility settings'), |
webmaster@1
|
191 '#options' => array( |
webmaster@1
|
192 t('Users cannot control whether or not they see this block.'), |
webmaster@1
|
193 t('Show this block by default, but let individual users hide it.'), |
webmaster@1
|
194 t('Hide this block by default but let individual users show it.') |
webmaster@1
|
195 ), |
webmaster@1
|
196 '#description' => t('Allow individual users to customize the visibility of this block in their account settings.'), |
webmaster@1
|
197 '#default_value' => $edit['custom'], |
webmaster@1
|
198 ); |
webmaster@1
|
199 |
webmaster@1
|
200 // Role-based visibility settings |
webmaster@1
|
201 $default_role_options = array(); |
webmaster@1
|
202 $result = db_query("SELECT rid FROM {blocks_roles} WHERE module = '%s' AND delta = '%s'", $module, $delta); |
webmaster@1
|
203 while ($role = db_fetch_object($result)) { |
webmaster@1
|
204 $default_role_options[] = $role->rid; |
webmaster@1
|
205 } |
webmaster@1
|
206 $result = db_query('SELECT rid, name FROM {role} ORDER BY name'); |
webmaster@1
|
207 $role_options = array(); |
webmaster@1
|
208 while ($role = db_fetch_object($result)) { |
webmaster@1
|
209 $role_options[$role->rid] = $role->name; |
webmaster@1
|
210 } |
webmaster@1
|
211 $form['role_vis_settings'] = array( |
webmaster@1
|
212 '#type' => 'fieldset', |
webmaster@1
|
213 '#title' => t('Role specific visibility settings'), |
webmaster@1
|
214 '#collapsible' => TRUE, |
webmaster@1
|
215 ); |
webmaster@1
|
216 $form['role_vis_settings']['roles'] = array( |
webmaster@1
|
217 '#type' => 'checkboxes', |
webmaster@1
|
218 '#title' => t('Show block for specific roles'), |
webmaster@1
|
219 '#default_value' => $default_role_options, |
webmaster@1
|
220 '#options' => $role_options, |
webmaster@1
|
221 '#description' => t('Show this block only for the selected role(s). If you select no roles, the block will be visible to all users.'), |
webmaster@1
|
222 ); |
webmaster@1
|
223 |
webmaster@1
|
224 $form['page_vis_settings'] = array( |
webmaster@1
|
225 '#type' => 'fieldset', |
webmaster@1
|
226 '#title' => t('Page specific visibility settings'), |
webmaster@1
|
227 '#collapsible' => TRUE, |
webmaster@1
|
228 ); |
webmaster@1
|
229 $access = user_access('use PHP for block visibility'); |
webmaster@1
|
230 |
webmaster@1
|
231 if ($edit['visibility'] == 2 && !$access) { |
webmaster@1
|
232 $form['page_vis_settings'] = array(); |
webmaster@1
|
233 $form['page_vis_settings']['visibility'] = array('#type' => 'value', '#value' => 2); |
webmaster@1
|
234 $form['page_vis_settings']['pages'] = array('#type' => 'value', '#value' => $edit['pages']); |
webmaster@1
|
235 } |
webmaster@1
|
236 else { |
webmaster@1
|
237 $options = array(t('Show on every page except the listed pages.'), t('Show on only the listed pages.')); |
webmaster@1
|
238 $description = t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '<front>')); |
webmaster@1
|
239 |
webmaster@1
|
240 if ($access) { |
webmaster@1
|
241 $options[] = t('Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).'); |
webmaster@1
|
242 $description .= ' '. t('If the PHP-mode is chosen, enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.', array('%php' => '<?php ?>')); |
webmaster@1
|
243 } |
webmaster@1
|
244 $form['page_vis_settings']['visibility'] = array( |
webmaster@1
|
245 '#type' => 'radios', |
webmaster@1
|
246 '#title' => t('Show block on specific pages'), |
webmaster@1
|
247 '#options' => $options, |
webmaster@1
|
248 '#default_value' => $edit['visibility'], |
webmaster@1
|
249 ); |
webmaster@1
|
250 $form['page_vis_settings']['pages'] = array( |
webmaster@1
|
251 '#type' => 'textarea', |
webmaster@1
|
252 '#title' => t('Pages'), |
webmaster@1
|
253 '#default_value' => $edit['pages'], |
webmaster@1
|
254 '#description' => $description, |
webmaster@1
|
255 ); |
webmaster@1
|
256 } |
webmaster@1
|
257 |
webmaster@1
|
258 $form['submit'] = array( |
webmaster@1
|
259 '#type' => 'submit', |
webmaster@1
|
260 '#value' => t('Save block'), |
webmaster@1
|
261 ); |
webmaster@1
|
262 |
webmaster@1
|
263 return $form; |
webmaster@1
|
264 } |
webmaster@1
|
265 |
webmaster@1
|
266 function block_admin_configure_validate($form, &$form_state) { |
webmaster@1
|
267 if ($form_state['values']['module'] == 'block') { |
webmaster@1
|
268 if (empty($form_state['values']['info']) || db_result(db_query("SELECT COUNT(*) FROM {boxes} WHERE bid != %d AND info = '%s'", $form_state['values']['delta'], $form_state['values']['info']))) { |
webmaster@1
|
269 form_set_error('info', t('Please ensure that each block description is unique.')); |
webmaster@1
|
270 } |
webmaster@1
|
271 } |
webmaster@1
|
272 } |
webmaster@1
|
273 |
webmaster@1
|
274 function block_admin_configure_submit($form, &$form_state) { |
webmaster@1
|
275 if (!form_get_errors()) { |
webmaster@1
|
276 db_query("UPDATE {blocks} SET visibility = %d, pages = '%s', custom = %d, title = '%s' WHERE module = '%s' AND delta = '%s'", $form_state['values']['visibility'], trim($form_state['values']['pages']), $form_state['values']['custom'], $form_state['values']['title'], $form_state['values']['module'], $form_state['values']['delta']); |
webmaster@1
|
277 db_query("DELETE FROM {blocks_roles} WHERE module = '%s' AND delta = '%s'", $form_state['values']['module'], $form_state['values']['delta']); |
webmaster@1
|
278 foreach (array_filter($form_state['values']['roles']) as $rid) { |
webmaster@1
|
279 db_query("INSERT INTO {blocks_roles} (rid, module, delta) VALUES (%d, '%s', '%s')", $rid, $form_state['values']['module'], $form_state['values']['delta']); |
webmaster@1
|
280 } |
webmaster@1
|
281 module_invoke($form_state['values']['module'], 'block', 'save', $form_state['values']['delta'], $form_state['values']); |
webmaster@1
|
282 drupal_set_message(t('The block configuration has been saved.')); |
webmaster@1
|
283 cache_clear_all(); |
webmaster@1
|
284 $form_state['redirect'] = 'admin/build/block'; |
webmaster@1
|
285 return; |
webmaster@1
|
286 } |
webmaster@1
|
287 } |
webmaster@1
|
288 |
webmaster@1
|
289 /** |
webmaster@1
|
290 * Menu callback: display the custom block addition form. |
webmaster@1
|
291 */ |
webmaster@1
|
292 function block_add_block_form(&$form_state) { |
webmaster@1
|
293 return block_admin_configure($form_state, 'block', NULL); |
webmaster@1
|
294 } |
webmaster@1
|
295 |
webmaster@1
|
296 function block_add_block_form_validate($form, &$form_state) { |
webmaster@1
|
297 if (empty($form_state['values']['info']) || db_result(db_query("SELECT COUNT(*) FROM {boxes} WHERE info = '%s'", $form_state['values']['info']))) { |
webmaster@1
|
298 form_set_error('info', t('Please ensure that each block description is unique.')); |
webmaster@1
|
299 } |
webmaster@1
|
300 } |
webmaster@1
|
301 |
webmaster@1
|
302 /** |
webmaster@1
|
303 * Save the new custom block. |
webmaster@1
|
304 */ |
webmaster@1
|
305 function block_add_block_form_submit($form, &$form_state) { |
webmaster@1
|
306 db_query("INSERT INTO {boxes} (body, info, format) VALUES ('%s', '%s', %d)", $form_state['values']['body'], $form_state['values']['info'], $form_state['values']['format']); |
webmaster@1
|
307 $delta = db_last_insert_id('boxes', 'bid'); |
webmaster@1
|
308 |
webmaster@1
|
309 foreach (list_themes() as $key => $theme) { |
webmaster@1
|
310 if ($theme->status) { |
webmaster@13
|
311 db_query("INSERT INTO {blocks} (visibility, pages, custom, title, module, theme, status, weight, delta, cache) VALUES(%d, '%s', %d, '%s', '%s', '%s', %d, %d, '%s', %d)", $form_state['values']['visibility'], trim($form_state['values']['pages']), $form_state['values']['custom'], $form_state['values']['title'], $form_state['values']['module'], $theme->name, 0, 0, $delta, BLOCK_NO_CACHE); |
webmaster@1
|
312 } |
webmaster@1
|
313 } |
webmaster@1
|
314 |
webmaster@1
|
315 foreach (array_filter($form_state['values']['roles']) as $rid) { |
webmaster@1
|
316 db_query("INSERT INTO {blocks_roles} (rid, module, delta) VALUES (%d, '%s', '%s')", $rid, $form_state['values']['module'], $delta); |
webmaster@1
|
317 } |
webmaster@1
|
318 |
webmaster@1
|
319 drupal_set_message(t('The block has been created.')); |
webmaster@1
|
320 cache_clear_all(); |
webmaster@1
|
321 |
webmaster@1
|
322 $form_state['redirect'] = 'admin/build/block'; |
webmaster@1
|
323 return; |
webmaster@1
|
324 } |
webmaster@1
|
325 |
webmaster@1
|
326 /** |
webmaster@1
|
327 * Menu callback; confirm deletion of custom blocks. |
webmaster@1
|
328 */ |
webmaster@1
|
329 function block_box_delete(&$form_state, $bid = 0) { |
webmaster@1
|
330 $box = block_box_get($bid); |
webmaster@7
|
331 $form['info'] = array('#type' => 'hidden', '#value' => $box['info']); |
webmaster@1
|
332 $form['bid'] = array('#type' => 'hidden', '#value' => $bid); |
webmaster@1
|
333 |
webmaster@1
|
334 return confirm_form($form, t('Are you sure you want to delete the block %name?', array('%name' => $box['info'])), 'admin/build/block', '', t('Delete'), t('Cancel')); |
webmaster@1
|
335 } |
webmaster@1
|
336 |
webmaster@1
|
337 /** |
webmaster@1
|
338 * Deletion of custom blocks. |
webmaster@1
|
339 */ |
webmaster@1
|
340 function block_box_delete_submit($form, &$form_state) { |
webmaster@1
|
341 db_query('DELETE FROM {boxes} WHERE bid = %d', $form_state['values']['bid']); |
webmaster@13
|
342 db_query("DELETE FROM {blocks} WHERE module = 'block' AND delta = '%s'", $form_state['values']['bid']); |
webmaster@1
|
343 drupal_set_message(t('The block %name has been removed.', array('%name' => $form_state['values']['info']))); |
webmaster@1
|
344 cache_clear_all(); |
webmaster@1
|
345 $form_state['redirect'] = 'admin/build/block'; |
webmaster@1
|
346 return; |
webmaster@1
|
347 } |
webmaster@1
|
348 |
webmaster@1
|
349 /** |
webmaster@1
|
350 * Process variables for block-admin-display.tpl.php. |
webmaster@1
|
351 * |
webmaster@1
|
352 * The $variables array contains the following arguments: |
webmaster@1
|
353 * - $form |
webmaster@1
|
354 * |
webmaster@1
|
355 * @see block-admin-display.tpl.php |
webmaster@1
|
356 * @see theme_block_admin_display() |
webmaster@1
|
357 */ |
webmaster@1
|
358 function template_preprocess_block_admin_display_form(&$variables) { |
webmaster@1
|
359 global $theme_key; |
webmaster@1
|
360 |
webmaster@1
|
361 $block_regions = system_region_list($theme_key); |
webmaster@1
|
362 $variables['throttle'] = module_exists('throttle'); |
webmaster@1
|
363 $variables['block_regions'] = $block_regions + array(BLOCK_REGION_NONE => t('Disabled')); |
webmaster@1
|
364 |
webmaster@1
|
365 foreach ($block_regions as $key => $value) { |
webmaster@1
|
366 // Highlight regions on page to provide visual reference. |
webmaster@1
|
367 drupal_set_content($key, '<div class="block-region">'. $value .'</div>'); |
webmaster@1
|
368 // Initialize an empty array for the region. |
webmaster@1
|
369 $variables['block_listing'][$key] = array(); |
webmaster@1
|
370 } |
webmaster@1
|
371 |
webmaster@1
|
372 // Initialize disabled blocks array. |
webmaster@1
|
373 $variables['block_listing'][BLOCK_REGION_NONE] = array(); |
webmaster@1
|
374 |
webmaster@1
|
375 // Set up to track previous region in loop. |
webmaster@1
|
376 $last_region = ''; |
webmaster@1
|
377 foreach (element_children($variables['form']) as $i) { |
webmaster@1
|
378 $block = &$variables['form'][$i]; |
webmaster@1
|
379 |
webmaster@1
|
380 // Only take form elements that are blocks. |
webmaster@1
|
381 if (isset($block['info'])) { |
webmaster@1
|
382 // Fetch region for current block. |
webmaster@1
|
383 $region = $block['region']['#default_value']; |
webmaster@1
|
384 |
webmaster@1
|
385 // Set special classes needed for table drag and drop. |
webmaster@1
|
386 $variables['form'][$i]['region']['#attributes']['class'] = 'block-region-select block-region-'. $region; |
webmaster@1
|
387 $variables['form'][$i]['weight']['#attributes']['class'] = 'block-weight block-weight-'. $region; |
webmaster@1
|
388 |
webmaster@1
|
389 $variables['block_listing'][$region][$i]->row_class = isset($block['#attributes']['class']) ? $block['#attributes']['class'] : ''; |
webmaster@1
|
390 $variables['block_listing'][$region][$i]->block_modified = isset($block['#attributes']['class']) && strpos($block['#attributes']['class'], 'block-modified') !== FALSE ? TRUE : FALSE; |
webmaster@1
|
391 $variables['block_listing'][$region][$i]->block_title = drupal_render($block['info']); |
webmaster@1
|
392 $variables['block_listing'][$region][$i]->region_select = drupal_render($block['region']) . drupal_render($block['theme']); |
webmaster@1
|
393 $variables['block_listing'][$region][$i]->weight_select = drupal_render($block['weight']); |
webmaster@1
|
394 $variables['block_listing'][$region][$i]->throttle_check = $variables['throttle'] ? drupal_render($block['throttle']) : ''; |
webmaster@1
|
395 $variables['block_listing'][$region][$i]->configure_link = drupal_render($block['configure']); |
webmaster@1
|
396 $variables['block_listing'][$region][$i]->delete_link = !empty($block['delete']) ? drupal_render($block['delete']) : ''; |
webmaster@1
|
397 $variables['block_listing'][$region][$i]->printed = FALSE; |
webmaster@1
|
398 |
webmaster@1
|
399 $last_region = $region; |
webmaster@1
|
400 } |
webmaster@1
|
401 } |
webmaster@1
|
402 |
webmaster@1
|
403 $variables['form_submit'] = drupal_render($variables['form']); |
webmaster@1
|
404 } |