Index: modules/block/block.module =================================================================== RCS file: /cvs/drupal/drupal/modules/block/block.module,v retrieving revision 1.291 diff -u -p -r1.291 block.module --- modules/block/block.module 16 Dec 2007 10:30:09 -0000 1.291 +++ modules/block/block.module 17 Dec 2007 00:59:31 -0000 @@ -162,20 +162,29 @@ function block_menu() { ); $default = variable_get('theme_default', 'garland'); foreach (list_themes() as $key => $theme) { - // only show enabled themes - if ($theme->status) { - $items['admin/build/block/list/'. $key] = array( - 'title' => check_plain($theme->info['name']), - 'page arguments' => array($key), - 'type' => $key == $default ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK, - 'weight' => $key == $default ? -10 : 0, - 'file' => 'block.admin.inc', - ); - } + $items['admin/build/block/list/'. $key] = array( + 'title' => check_plain($theme->info['name']), + 'page arguments' => array($key), + 'type' => $key == $default ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK, + 'weight' => $key == $default ? -10 : 0, + 'file' => 'block.admin.inc', + 'access callback' => 'block_editable_themes', + 'access arguments' => array($theme, $key), + ); } return $items; } + +function block_editable_themes($theme, $key) { + if (user_access('administer blocks') && ($theme->status || $key == variable_get('admin_theme', '0')) ){ + return true; + } + else { + return false; + } +} + /** * Implementation of hook_block(). *