Index: modules/project/release/project_release.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.js,v
retrieving revision 1.3
diff -U3 -r1.3 project_release.js
--- modules/project/release/project_release.js	14 Jan 2009 06:13:57 -0000	1.3
+++ modules/project/release/project_release.js	7 May 2009 22:36:33 -0000
@@ -2,7 +2,7 @@
 
 Drupal.behaviors.projectReleaseAutoAttach = function () {
   // Set handler for clicking a radio to change the recommended version.
-  $('form#project-release-project-edit-form input.form-radio.recommended').click(function () {
+  $('form#project-release-project-edit-form input.form-checkbox.recommended').click(function () {
     Drupal.projectReleaseSetRecommended( this );
   });
   
@@ -58,10 +58,16 @@
   return recommended;
 };
 
-Drupal.projectReleaseSetRecommended = function (radio) {
-  $(radio).attr('checked','true');
-  var recommended = $(radio).parents('tr:eq(0)').find('.version-name').val();
-  $(radio).parents('table:eq(0)').find('tr:last span')
+Drupal.projectReleaseSetRecommended = function (checkbox) {
+  if (!checkbox.checked) {
+    return Drupal.projectReleaseUnsetRecommended($(checkbox).parents('table:eq(0)'));
+  }
+  $(checkbox).parents('table:eq(0)').find(".recommended").each( function(i) {
+    this.checked = false;
+  });
+  $(checkbox).attr('checked','true');
+  var recommended = $(checkbox).parents('tr:eq(0)').find('.version-name').val();
+  $(checkbox).parents('table:eq(0)').find('tr:last span')
     .html(recommended)
     .css('background-color', '#FFFFAA');
 };
Index: modules/project/release/project_release.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v
retrieving revision 1.111
diff -U3 -r1.111 project_release.module
--- modules/project/release/project_release.module	4 Apr 2009 19:32:05 -0000	1.111
+++ modules/project/release/project_release.module	7 May 2009 22:36:35 -0000
@@ -782,16 +782,6 @@
         db_query("UPDATE {project_release_supported_versions} SET recommended = %d WHERE nid = %d AND tid = %d", 0, $pid, $tid);
         $num_recommended = 0;
       }
-
-      if ($num_recommended == 0) {
-        // We no longer have a recommended major for this API/tid, so select a
-        // sensible default, if possible. Find the lowest supported major
-        // number that has a published release.
-        $lowest_major = db_result(db_query("SELECT MIN(r.version_major) FROM {project_release_nodes} r INNER JOIN {project_release_supported_versions} prsv ON r.pid = prsv.nid INNER JOIN {node} n ON n.nid = r.nid INNER JOIN {term_node} tn ON tn.nid = n.nid WHERE r.pid = %d AND tn.tid = %d AND prsv.supported = %d AND n.status = %d", $pid, $tid, 1, 1));
-        if ($lowest_major !== NULL && $lowest_major !== FALSE) {
-          db_query("UPDATE {project_release_supported_versions} SET supported = %d, recommended = %d WHERE nid = %d AND tid = %d AND major = %d", 1, 1, $pid, $tid, $lowest_major);
-        }
-      }
     }
   }
   else {
@@ -1289,6 +1279,12 @@
           '#default_value' => $major_data['#supported'],
           '#attributes' => array('class' => 'supported'),
         ),
+        'recommended' => array(
+          '#type' => 'checkbox',
+          '#title' => t('Recommended'),
+          '#default_value' => $major_data['#recommended'],
+          '#attributes' => array('class' => 'recommended'),
+        ),
         'snapshot' => array(
           '#type' => 'checkbox',
           '#title' => t('Show snapshot release'),
@@ -1296,19 +1292,13 @@
           '#attributes' => array('class' => 'snapshot'),
         ),
         'version_name' => array(
-          '#type' => 'value',
+          '#type' => 'hidden',
           '#value' => $version_name,
           '#attributes' => array('class' => 'version-name'),
         ),
       );
     }
-    $form['api'][$api_tid]['recommended'] = array(
-      '#type' => 'radios',
-      '#title' => t('Recommended'),
-      '#options' => $recommended_options,
-      '#default_value' => $recommended_version,
-      '#attributes' => array('class'=>'recommended'),
-    );
+
     $recommended_major = db_result(db_query("SELECT major FROM {project_release_supported_versions} WHERE nid = %d AND tid = %d AND recommended = %d", $node->nid, $api_tid, 1));
     if ($recommended_major !== FALSE) {
       $current_recommended = $form['api'][$api_tid]['major'][$recommended_major]['version_name']['#value'];
@@ -1343,7 +1333,6 @@
         'colspan' => 2,
       ),
     );
-
     foreach (element_children($form['api']) as $tid) {
       $output .= '<h3>'. $form['api'][$tid]['#api_term_name'] .'</h3>';
       $rows = array();
@@ -1355,10 +1344,10 @@
         // table headers to label each column.
         unset($form['api'][$tid]['major'][$major]['supported']['#title']);
         $row[] = drupal_render($form['api'][$tid]['major'][$major]['supported']);
-        unset($form['api'][$tid]['recommended'][$major]['#title']);
-        $row[] = drupal_render($form['api'][$tid]['recommended'][$major]);
+        unset($form['api'][$tid]['major'][$major]['recommended']['#title']);
+        $row[] = drupal_render($form['api'][$tid]['major'][$major]['recommended']);
         unset($form['api'][$tid]['major'][$major]['snapshot']['#title']);
-        $row[] = drupal_render($form['api'][$tid]['major'][$major]['snapshot']).
+        $row[] = drupal_render($form['api'][$tid]['major'][$major]['snapshot']) .
           drupal_render($form['api'][$tid]['major'][$major]['version_name']);
         $rows[] = $row;
       }
@@ -1392,26 +1381,15 @@
   if (isset($form_state['values']['api'])) {
     foreach ($form_state['values']['api'] as $tid => $api_info) {
       $supported = FALSE;
+      $recommended = FALSE;
       // First, we just iterate through to see if *any* majors are supported.
       foreach ($api_info['major'] as $major => $flags) {
-        if (!empty($flags['supported'])) {
-          $supported = TRUE;
-          break;
-        }
-      }
-      if ($supported) {
         // At least 1 major is supported, so validate the settings.
-        foreach ($api_info['major'] as $major => $flags) {
-          if (empty($flags['supported']) && !empty($flags['snapshot'])) {
-            $element = 'api]['. $tid .'][major]['. $major .'][snapshot';
-            form_set_error($element, t('You can not show a snapshot release for a major version that is not supported for %api_term_name.', array('%api_term_name' => $form_state['values']['api'][$tid]['#api_term_name'])));
-          }
-        }
-        $recommended = $api_info['recommended'];
-        if ($recommended < 0) {
-          form_set_error("api][$tid][recommended", t('You must select a recommended major version for %api_term_name.', array('%api_term_name' => $form_state['values']['api'][$tid]['#api_term_name'])));
+        if ($flags['supported'] == FALSE && $flags['snapshot'] == TRUE) {
+          $element = 'api]['. $tid .'][major]['. $major .'][snapshot';
+          form_set_error($element, t('You can not show a snapshot release for a major version that is not supported for %api_term_name.', array('%api_term_name' => $form_state['values']['api'][$tid]['#api_term_name'])));
         }
-        elseif (empty($api_info['major'][$recommended]['supported'])) {
+        if ($flags['supported'] == FALSE && $flags['recommended'] == TRUE) {
           form_set_error("api][$tid][recommended", t('You can not recommend a major version that is not supported for %api_term_name.', array('%api_term_name' => $form_state['values']['api'][$tid]['#api_term_name'])));
         }
       }
@@ -1430,13 +1408,8 @@
 
   if (!empty($form_state['values']['api'])) {
     foreach ($form_state['values']['api'] as $tid => $values) {
-      if (isset($values['recommended'])) {
-        $recommended_major = $values['recommended'];
-      }
       if (!empty($values['major'])) {
         foreach ($values['major'] as $major => $major_values) {
-          $major_values['recommended'] = ($major_values['supported'] && $recommended_major == $major) ? 1 : 0;
-          $major_values['snapshot'] = ($major_values['supported'] && $major_values['snapshot']) ? 1 : 0;
           if ($obj = db_fetch_object(db_query("SELECT * FROM {project_release_supported_versions} WHERE nid = %d AND tid = %d AND major = %d", $nid, $tid, $major))) {
             if ($obj->supported != $major_values['supported']
                 || $obj->recommended != $major_values['recommended']
@@ -1675,7 +1648,7 @@
 function project_release_get_current_recommended($project_nid, $api_tid, $recommended_major = NULL) {
   static $current = array();
   $major = isset($recommended_major) ? $recommended_major : 'current';
-  if (isset($current_major[$project_nid][$api_tid][$major])) {
+  if (isset($current[$project_nid][$api_tid][$major])) {
     return $current[$project_nid][$api_tid][$major];
   }
 
