From 819b0e95a9f36fbbc51268e82c5df87b2eb5fb67 Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Sat, 11 Oct 2008 03:25:36 +0000
Subject: [PATCH] #319699 by Dave Reid: Simplify logic for hiding required
 modules.

---
 modules/system/system.admin.inc |  5 +----
 modules/system/system.test      | 12 ++++++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 9ef4fcf45576..1d37f6b66671 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -645,7 +645,7 @@ function system_modules($form_state = array()) {
     $extra = array();
     // If the module is requried, set it to be so.
     if (in_array($filename, $modules_required)) {
-      $extra['required'] = TRUE;
+      continue;
     }
     $extra['enabled'] = (bool) $module->status;
     // If this module has dependencies, add them to the array.
@@ -689,7 +689,6 @@ function system_modules($form_state = array()) {
       '#type' => 'fieldset',
       '#title' => t($package),
       '#collapsible' => TRUE,
-      '#access' => ($package != 'Core - required'),
       '#theme' => 'system_modules_fieldset',
       '#header' => array(
         array('data' => t('Enabled'), 'class' => 'checkbox'),
@@ -722,7 +721,6 @@ function system_sort_modules_by_info_name($a, $b) {
 function _system_modules_build_row($info, $extra) {
   // Add in the defaults.
   $extra += array(
-    'required' => FALSE,
     'dependencies' => array(),
     'dependents' => array(),
     'disabled' => FALSE,
@@ -773,7 +771,6 @@ function _system_modules_build_row($info, $extra) {
     $form['enable'] = array(
       '#type' => 'checkbox',
       '#title' => t('Enable'),
-      '#required' => $extra['required'],
       '#default_value' => $extra['enabled'],
     );
     if ($extra['disabled']) {
diff --git a/modules/system/system.test b/modules/system/system.test
index 52c51db725ee..dc36470e4459 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -88,6 +88,18 @@ class EnableDisableCoreTestCase extends DrupalWebTestCase {
     $this->assertTableCount('locale', TRUE);
   }
 
+  /**
+   * Assert that core required modules cannot be disabled.
+   */
+  function testDisableRequired() {
+    $required_modules = drupal_required_modules();
+    foreach($required_modules as $module) {
+      // Check to make sure the checkbox for required module is not found.
+      $this->drupalGet('admin/build/modules');
+      $this->assertNoFieldByName('modules[Core][' . $module . '][enable]');
+    }
+  }
+
   /**
    * Assert tables that begin with the specified base table name.
    *
-- 
GitLab