? 302166.patch
? includes/coder_7x.inc
Index: coder.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder.js,v
retrieving revision 1.3
diff -u -u -p -r1.3 coder.js
--- coder.js	7 Apr 2007 17:28:03 -0000	1.3
+++ coder.js	20 Sep 2008 12:33:32 -0000
@@ -15,34 +15,42 @@ if (Drupal.jsEnabled) {
           if (this == core || this == active) {
             modules = "input[@id^=edit-coder-modules-]";
             themes = "input[@id^=edit-coder-themes-]";
+            profiles = "input[@id^=edit-coder-profiles-]";
             if (core.checked || active.checked) {
               $(modules).uncheck();
               $(themes).uncheck();
+              $(profiles).uncheck();
               if (core.checked) {
                 modules += '.coder-core';
                 themes += '.coder-core';
+                profiles += '.coder-core';
               }
               if (active.checked) {
                 modules += '.coder-active';
                 themes += '.coder-active';
+                profiles += '.coder-active';
               }
               $(modules).check();
               $(themes).check();
+              $(profiles).check();
             }
             else {
               if (this == active) {
                 modules += ".coder-active";
                 themes += ".coder-active";
+                profiles += ".coder-active";
               }
               else {
                 modules += ".coder-core";
                 themes += ".coder-core";
+                profiles += ".coder-core";
               }
               $(modules).uncheck();
               $(themes).uncheck();
+              $(profiles).uncheck();
             }
           }
-          else if (this.id.substr(0, 19) == "edit-coder-modules-" || this.id.substr(0, 18) == "edit-coder-themes-") {
+          else if (this.id.substr(0, 19) == "edit-coder-modules-" || this.id.substr(0, 18) == "edit-coder-themes-" || this.id.substr(0,20) == "edit-coder-profiles-") {
             core.checked = false;
             active.checked = false;
           }
Index: coder.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder.module,v
retrieving revision 1.88.2.50
diff -u -u -p -r1.88.2.50 coder.module
--- coder.module	20 Sep 2008 11:35:41 -0000	1.88.2.50
+++ coder.module	20 Sep 2008 12:33:32 -0000
@@ -348,8 +348,22 @@ function _coder_settings_form($settings,
       $system_links[$system->name] = l($display_name, "coder/$system->name");
       $files[$system->name] = $system->filename;
     }
-    asort($system_links);
 
+    // Get the list of profiles.
+    $profiles = file_scan_directory('profiles', '\.profile$', array('.', '..', 'CVS'), 0, TRUE, 'name', 0);
+    foreach ($profiles as $profile) {
+      $display_name = $profile->name;
+      $system_profiles[$profile->name] = $profile->name;
+      $files[$profile->name] = $profile->filename;
+      if (_coder_is_drupal_core($profile)) {
+        $display_name .= ' ('. t('core') .')';
+        $system_core[$profile->name] = $profile->name;
+      }
+      $system_links[$profile->name] = l($display_name, "coder/$profile->name");
+    }
+
+    // Sort all of the links.
+    asort($system_links);
 
     // Display what to review options.
     $form['coder_what'] = array(
@@ -458,6 +472,30 @@ function _coder_settings_form($settings,
       $themes = isset($settings['coder_themes']) && is_array($settings['coder_themes']) ? $settings['coder_themes'] : array();
     }
 
+    // Display the profiles in a fieldset.
+    $form['coder_what']['coder_profiles'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Select specific profiles'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      'checkboxes' => array(
+        '#theme' => 'cols',
+        '#cols' => 2,
+      ),
+    );
+    if (isset($settings['coder_all'])) {
+      $profiles = $system_profiles;
+    }
+    elseif (isset($settings['coder_core']) && $settings['coder_core']) {
+      $profiles = array_intersect($system_core, $system_profiles);
+    }
+    elseif (isset($settings['coder_contrib']) && $settings['coder_contrib']) {
+      $themes = array_diff($system_profiles, array_intersect($system_core, $system_profiles));
+    }
+    else {
+      $profiles = isset($settings['coder_profiles']) && is_array($settings['coder_profiles']) ? $settings['coder_profiles'] : array();
+    }
+
     foreach ($system_links as $name => $link) {
       $classes = array();
       if (in_array($name, $system_active)) {
@@ -470,6 +508,10 @@ function _coder_settings_form($settings,
         $type = 'theme';
         $default_value = isset($themes[$name]);
       }
+      elseif (in_array($name, $system_profiles)) {
+        $type = 'profile';
+        $default_value = isset($profiles[$name]);
+      }
       else {
         $type = 'module';
         $default_value = isset($modules[$name]);
@@ -482,7 +524,7 @@ function _coder_settings_form($settings,
       );
     }
 
-    $system = array_merge($modules, $themes);
+    $system = array_merge($modules, $themes, $profiles);
   }
   return $form;
 }
@@ -540,6 +582,7 @@ function coder_settings_form_submit($for
   $form_state['storage'] = $form_state['values'];
   variable_set('coder_modules', _coder_settings_array($form_state, 'module'));
   variable_set('coder_themes', _coder_settings_array($form_state, 'theme'));
+  variable_set('coder_profiles', _coder_settings_array($form_state, 'profile'));
 }
 
 /**
@@ -632,6 +675,7 @@ function _coder_get_default_settings($ar
       $settings['coder_includes_exclusions'] = variable_get('coder_includes_exclusions', '');
       $settings['coder_modules'] = variable_get('coder_modules', array());
       $settings['coder_themes'] = variable_get('coder_themes', array());
+      $settings['coder_profiles'] = variable_get('coder_profiles', array());
       break;
 
     default:
@@ -662,6 +706,7 @@ function coder_page_form($form_state) {
     $settings = $form_state['storage'];
     $settings['coder_modules'] = _coder_settings_array($form_state, 'module');
     $settings['coder_themes'] = _coder_settings_array($form_state, 'theme');
+    $settings['coder_profiles'] = _coder_settings_array($form_state, 'profile');
     drupal_set_title(t('Code review (submitted options)'));
   }
   else {
@@ -1647,6 +1692,9 @@ function _coder_is_drupal_core($module) 
       'marvin' => 1,
       'minnelli' => 1,
       'pushbutton' => 1,
+
+      // Profiles:
+      'default' => 1,
     );
   }
   return isset($core[$module->name]) ? 1 : 0;
