? .DS_Store
? sites/all/modules/devel
? sites/default/files
? sites/default/settings.php
Index: modules/dashboard/dashboard.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/dashboard/dashboard.module,v
retrieving revision 1.34
diff -u -p -r1.34 dashboard.module
--- modules/dashboard/dashboard.module	30 Aug 2010 00:22:03 -0000	1.34
+++ modules/dashboard/dashboard.module	13 Sep 2010 02:17:19 -0000
@@ -313,15 +313,17 @@ function dashboard_admin_blocks() {
 function dashboard_form_block_admin_display_form_alter(&$form, &$form_state) {
   // Hide dashboard regions (and any blocks placed within them) from the block
   // administration form and from the options list on that form.
-  $dashboard_regions = dashboard_region_descriptions();
-  $form['block_regions']['#value'] = array_diff_key($form['block_regions']['#value'], $dashboard_regions);
-  foreach (element_children($form['blocks']) as $i) {
-    $block = &$form['blocks'][$i];
-    if (isset($block['region']['#default_value']) && isset($dashboard_regions[$block['region']['#default_value']])) {
-      $block['#access'] = FALSE;
-    }
-    elseif (isset($block['region']['#options'])) {
-      $block['region']['#options'] = array_diff_key($block['region']['#options'], $dashboard_regions);
+  if ($form['#form_id'] == 'block_admin_display_form') {
+    $dashboard_regions = dashboard_region_descriptions();
+    $form['block_regions']['#value'] = array_diff_key($form['block_regions']['#value'], $dashboard_regions);
+    foreach (element_children($form['blocks']) as $i) {
+      $block = &$form['blocks'][$i];
+      if (isset($block['region']['#default_value']) && isset($dashboard_regions[$block['region']['#default_value']])) {
+        $block['#access'] = FALSE;
+      }
+      elseif (isset($block['region']['#options'])) {
+        $block['region']['#options'] = array_diff_key($block['region']['#options'], $dashboard_regions);
+      }
     }
   }
 }
Index: modules/dashboard/dashboard.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/dashboard/dashboard.test,v
retrieving revision 1.4
diff -u -p -r1.4 dashboard.test
--- modules/dashboard/dashboard.test	20 Aug 2010 01:42:52 -0000	1.4
+++ modules/dashboard/dashboard.test	13 Sep 2010 02:17:19 -0000
@@ -58,3 +58,41 @@ class DashboardAccessTestCase extends Dr
     $this->assertNoText($custom_block['title'], t('Non-admin has no access to a dashboard block.'));
   }
 }
+
+class DashboardAdminTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Dashboard administration',
+      'description' => 'Test administration settings for the dashboard.',
+      'group' => 'Dashboard',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    // Create and log in an administrative user having access to the dashboard.
+    $admin_user = $this->drupalCreateUser(array('access dashboard', 'administer blocks'));
+    $this->drupalLogin($admin_user);
+  }
+
+  /**
+   * Test adding a block to the dashboard and checking access to it.
+   */
+  function testDashboardAdminPage() {
+    $dashboard_regions = dashboard_region_descriptions();
+
+    // Ensure blocks can be placed in dashboard regions.
+    $this->drupalGet('admin/structure/dashboard');
+    foreach($dashboard_regions as $region => $description){
+      $this->assertRaw('<option value="' . $region . '"', t('%region is an available choice on the dashboard block configuration page.', array('%region' => $region)));
+    }
+
+    // Ensure blocks cannot be placed in dashboard regions on the standard
+    // blocks configuration page.
+    $this->drupalGet('admin/structure/block');
+    foreach($dashboard_regions as $region => $description){
+      $this->assertNoRaw('<option value="' . $region . '"', t('%region is not an available choice on the block configuration page.', array('%region' => $region)));
+    }
+  }
+}
