summaryrefslogtreecommitdiff
path: root/modules/block
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-09-24 21:36:22 +0000
committerDries Buytaert <dries@buytaert.net>2010-09-24 21:36:22 +0000
commite22b2153a2a83b1d1eca60c62703514cd09a55aa (patch)
tree3a15f99951e57c3409b5dddb2729bb4ff368da0a /modules/block
parent01f5742f19d0731aa28da41a220db0386eb4ce32 (diff)
downloadbrdo-e22b2153a2a83b1d1eca60c62703514cd09a55aa.tar.gz
brdo-e22b2153a2a83b1d1eca60c62703514cd09a55aa.tar.bz2
- Patch #140783 by sun: a select list without #default_value() always passes form validation.
Diffstat (limited to 'modules/block')
-rw-r--r--modules/block/block.admin.inc25
1 files changed, 13 insertions, 12 deletions
diff --git a/modules/block/block.admin.inc b/modules/block/block.admin.inc
index c47a5a7d9..db5b72100 100644
--- a/modules/block/block.admin.inc
+++ b/modules/block/block.admin.inc
@@ -85,9 +85,6 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
$block_regions = system_region_list($theme, REGIONS_VISIBLE);
}
- // We always add a region for disabled blocks.
- $block_regions += array(BLOCK_REGION_NONE => '<' . t('none') . '>');
-
// Weights range from -delta to +delta, so delta should be at least half
// of the amount of blocks present. This makes sure all blocks in the same
// region get an unique weight.
@@ -100,7 +97,8 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
);
$form['block_regions'] = array(
'#type' => 'value',
- '#value' => $block_regions,
+ // Add a last region for disabled blocks.
+ '#value' => $block_regions + array(BLOCK_REGION_NONE => BLOCK_REGION_NONE),
);
$form['blocks'] = array();
$form['#tree'] = TRUE;
@@ -127,13 +125,15 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
'#default_value' => $block['weight'],
'#delta' => $weight_delta,
'#title_display' => 'invisible',
- '#title' => t('Weight for @block block', array('%block' => $block['info'])),
+ '#title' => t('Weight for @block block', array('@block' => $block['info'])),
);
$form['blocks'][$key]['region'] = array(
'#type' => 'select',
- '#default_value' => $block['region'],
+ '#required' => FALSE,
+ '#default_value' => $block['region'] != BLOCK_REGION_NONE ? $block['region'] : NULL,
+ '#empty_value' => BLOCK_REGION_NONE,
'#title_display' => 'invisible',
- '#title' => t('Region for @block block', array('%block' => $block['info'])),
+ '#title' => t('Region for @block block', array('@block' => $block['info'])),
'#options' => $block_regions,
);
$form['blocks'][$key]['configure'] = array(
@@ -150,7 +150,7 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
}
}
// Do not allow disabling the main system content block.
- unset($form['blocks']['system_main']['region']['#options'][BLOCK_REGION_NONE]);
+ $form['blocks']['system_main']['region']['#required'] = TRUE;
$form['actions'] = array(
'#tree' => FALSE,
@@ -302,9 +302,10 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
$form['regions'][$key] = array(
'#type' => 'select',
'#title' => $theme->info['name'],
- '#default_value' => (!empty($region) ? $region : BLOCK_REGION_NONE),
- '#options' => array(BLOCK_REGION_NONE => t('<none>')) + system_region_list($key, REGIONS_VISIBLE),
- '#expandable' => ($key !== $theme_default),
+ '#required' => FALSE,
+ '#default_value' => !empty($region) && $region != -1 ? $region : NULL,
+ '#empty_value' => BLOCK_REGION_NONE,
+ '#options' => system_region_list($key, REGIONS_VISIBLE),
'#weight' => ($key == $theme_default ? 9 : 10),
);
}
@@ -657,7 +658,7 @@ function template_preprocess_block_admin_display_form(&$variables) {
$block = &$variables['form']['blocks'][$i];
// Fetch the region for the current block.
- $region = $block['region']['#default_value'];
+ $region = (isset($block['region']['#default_value']) ? $block['region']['#default_value'] : BLOCK_REGION_NONE);
// Set special classes needed for table drag and drop.
$block['region']['#attributes']['class'] = array('block-region-select', 'block-region-' . $region);