Index: coder.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder.js,v
retrieving revision 1.3
diff -u -p -r1.3 coder.js
--- coder.js 7 Apr 2007 17:28:03 -0000 1.3
+++ coder.js 2 Sep 2008 10:16:50 -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.46
diff -u -p -r1.88.2.46 coder.module
--- coder.module 28 Aug 2008 14:31:19 -0000 1.88.2.46
+++ coder.module 2 Sep 2008 10:16:51 -0000
@@ -357,8 +357,20 @@ 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");
+    }
+    asort($system_links);

     // Display what to review options.
     $form['coder_what'] = array(
@@ -469,6 +481,28 @@ 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);
+    }
+    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)) {
@@ -481,6 +515,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]);
@@ -493,7 +531,7 @@ function _coder_settings_form($settings,
       );
     }

-    $system = array_merge($modules, $themes);
+    $system = array_merge($modules, $themes, $profiles);
   }
   return $form;
 }
@@ -551,6 +589,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'));
 }

 /**
@@ -639,6 +678,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:
@@ -669,6 +709,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 {
@@ -1650,6 +1691,9 @@ function _coder_is_drupal_core($module)
       'marvin' => 1,
       'minnelli' => 1,
       'pushbutton' => 1,
+
+      // Profiles:
+      'default' => 1,
     );
   }
   return isset($core[$module->name]) ? 1 : 0;
