? release/dif cvs diff: Diffing release Index: release/project_release.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.install,v retrieving revision 1.15 diff -u -p -r1.15 project_release.install --- release/project_release.install 22 Dec 2007 09:11:44 -0000 1.15 +++ release/project_release.install 23 Dec 2007 11:08:53 -0000 @@ -30,10 +30,12 @@ function project_release_install() { PRIMARY KEY (nid), KEY project_release_projects_releases (releases) ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); - db_query("CREATE TABLE IF NOT EXISTS {project_release_default_versions} ( + db_query("CREATE TABLE IF NOT EXISTS {project_release_supported_versions} ( nid int unsigned NOT NULL default '0', tid int unsigned NOT NULL default '0', major int unsigned NOT NULL default '0', + supported unsigned tinyint NOT NULL default '1', + recommended unsigned tinyint NOT NULL default '0', PRIMARY KEY (nid, tid) ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); db_query("CREATE TABLE IF NOT EXISTS {project_release_package_errors} ( @@ -81,11 +83,13 @@ function project_release_install() { );"); db_query("CREATE INDEX {project_release_projects}_releases_idx ON {project_release_projects} (releases)"); } - if (!db_table_exists('project_release_default_versions')) { - db_query("CREATE TABLE {project_release_default_versions} ( + if (!db_table_exists('project_release_supported_versions')) { + db_query("CREATE TABLE {project_release_supported_versions} ( nid int NOT NULL default '0', tid int NOT NULL default '0', major int NOT NULL default '0', + supported smallint NOT NULL default '1', + recommended smallint NOT NULL default '0', PRIMARY KEY (nid, tid) );"); } @@ -296,3 +300,25 @@ function project_release_update_5003() { } return $ret; } + +/** + * Add 'supported' and 'recommended' to {project_release_default_versions} + * and rename it to {project_release_supported_versions}. + */ +function project_release_update_5200() { + $ret = array(); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $ret[] = update_sql('RENAME TABLE {project_release_default_versions} TO {project_release_supported_versions}'); + $ret[] = update_sql("ALTER TABLE {project_release_supported_versions} ADD supported tinyint unsigned NOT NULL default '1'"); + $ret[] = update_sql("ALTER TABLE {project_release_supported_versions} ADD recommended tinyint unsigned NOT NULL default '0'"); + break; + case 'pgsql': + $ret[] = update_sql('ALTER TABLE {project_release_default_versions} RENAME TO {project_release_supported_versions}'); + db_add_table($ret, 'project_release_supported_versions', 'supported', 'smallint', array('not null' => TRUE, 'default' => 1)); + db_add_table($ret, 'project_release_supported_versions', 'recommended', 'smallint', array('not null' => TRUE, 'default' => 0)); + break; + } + return $ret; +} Index: release/project_release.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v retrieving revision 1.55 diff -u -p -r1.55 project_release.module --- release/project_release.module 21 Oct 2007 19:45:45 -0000 1.55 +++ release/project_release.module 23 Dec 2007 11:08:54 -0000 @@ -1023,7 +1023,75 @@ function project_release_project_edit_re return drupal_get_form('project_release_project_edit_form', $node); } + function project_release_project_edit_form($node) { + $data = _project_release_project_edit_form_getdef($node); + return _project_release_project_edit_form_formdef($data); +} + +function _project_release_project_edit_form_getdef($node) { + $data = array(); + $data[102] = array( + 'name' => '4.6.x', + 'majors' => array( + 1 => array('#recommended' => TRUE, '#supported' => TRUE), + ), + ); + $data[103] = array( + 'name' => '4.7.x', + 'majors' => array( + 1 => array('#recommended' => TRUE, '#supported' => TRUE), + ), + ); + $data[104] = array( + 'name' => '5.x', + 'majors' => array( + 1 => array('#recommended' => FALSE, '#supported' => FALSE), + 2 => array('#recommended' => FALSE, '#supported' => TRUE), + 3 => array('#recommended' => TRUE, '#supported' => TRUE), + ), + ); + $data[105] = array( + 'name' => '6.x', + 'majors' => array( + 1 => array('#recommended' => TRUE, '#supported' => TRUE), + ), + ); + + $data['node'] = $node; + + return $data; +} + +function _project_release_project_edit_form_formdef($data) { + $form = array(); + + $node = $data['node']; + unset($data['node']); + + foreach ($data as $core_tid => $core_data) { + $form['cores'][$core_tid] = array( + '#core_name' => $core_data['name'], + ); + $recommended_version = -1; + foreach ($core_data['majors'] as $major_version => $major_data) { + if ($major_data['#supported'] == TRUE) { + $recommended_version = $major_version; + } + $form['cores'][$core_tid]['major'][$major_version]['supported'] = array( + '#type' => 'checkbox', + '#title' => t('Supported'), + '#default_value' => $major_data['#supported'], + ); + } + $form['cores'][$core_tid]['recommended'] = array( + '#type' => 'radios', + '#title' => t('Recommended'), + '#options' => array_keys($core_data['majors']), + '#default_value' => $recommended_version, + ); + } + $form['advanced'] = array( '#type' => 'fieldset', '#title' => t('Advanced options'), @@ -1040,121 +1108,49 @@ function project_release_project_edit_fo '#default_value' => isset($node->releases) ? $node->releases : 1, '#description' => t('Allow releases of this project with specific versions.'), ); - if ($node->releases) { - $releases = array(); - if ($tree = project_release_get_api_taxonomy()) { - $query = db_query('SELECT tid, major FROM {project_release_default_versions} WHERE nid = %d', $node->nid); - $node->default_versions = array(); - while ($version = db_fetch_object($query)) { - $tid = $version->tid; - $major = $version->major; - $node->default_versions[$tid] = $major; - } - $result = db_query(db_rewrite_sql("SELECT n.nid, tn.tid, td.name, r.* FROM {node} n INNER JOIN {project_release_nodes} r ON r.nid = n.nid INNER JOIN {term_node} tn ON tn.nid = r.nid INNER JOIN {term_data} td ON tn.tid = td.tid WHERE (r.pid = %d) AND (n.status = 1) AND (r.file_path <> '') ORDER BY tn.tid, r.rebuild, r.version_major DESC, r.version_minor DESC, r.version_patch DESC, r.file_date DESC"), $node->nid); - while ($rel = db_fetch_object($result)) { - $tid = $rel->tid; - $major = $rel->version_major; - if (isset($major)) { - $releases[$tid]['majors'][$major] = $major; - } - $releases[$tid]['name'] = $rel->name; - if (!isset($releases[$tid]['current']) && (!isset($node->default_versions[$tid]) || $node->default_versions[$tid] == $major)) { - $releases[$tid]['current'] = $rel->version; - } - } - $form['default_versions'] = array('#tree' => TRUE); - foreach ($tree as $term) { - $tid = $term->tid; - if (isset($releases[$tid])) { - $form['default_versions'][$tid] = array(); - if (count($releases[$tid]['majors']) > 1) { - $form['default_versions'][$tid]['major'] = array( - '#title' => t('Major version'), - '#type' => 'select', - '#options' => $releases[$tid]['majors'], - '#default_value' => isset($node->default_versions[$tid]) ? $node->default_versions[$tid] : 1, - ); - } - else { - $form['default_versions'][$tid]['major'] = array( - '#type' => 'value', - '#theme' => 'project_release_form_value', - '#value' => is_array($releases[$tid]['majors']) ? current($releases[$tid]['majors']) : '', - ); - } - $form['default_versions'][$tid]['current_release'] = array( - '#type' => 'value', - '#theme' => 'project_release_form_value', - '#value' => $releases[$tid]['current'], - ); - $form['default_versions'][$tid]['name'] = array( - '#type' => 'value', - '#theme' => 'project_release_form_value', - '#value' => $releases[$tid]['name'], - ); - } - } - } - - if (user_access('administer projects')) { - $form['advanced']['version_format'] = array( - '#type' => 'textfield', - '#title' => t('Version format string'), - '#default_value' => $node->version_format, - '#size' => 50, - '#maxlength' => 255, - '#description' => t('Customize the format of the version strings for releases of this project.') .' '. PROJECT_RELEASE_VERSION_FORMAT_HELP .' '. t('If blank, this project will use the site-wide default (currently set to: %default)', array('%default' => variable_get('project_release_default_version_format', PROJECT_RELEASE_DEFAULT_VERSION_FORMAT))), - ); - } - $vocab = taxonomy_get_vocabulary(_project_release_get_api_vid()); - $vocab = isset($vocab) ? theme('placeholder', $vocab->name) : t('version'); - $form['snapshot_table'] = array( - '#type' => 'checkbox', - '#title' => t('Display snapshot releases on project page'), - '#return_value' => 1, - '#default_value' => isset($node->snapshot_table) ? $node->snapshot_table : 1, - '#description' => t('Note: Even if the current default release for a given !vocabulary_name is a development snapshot, it will only be shown if this checkbox is enabled.', array('!vocabulary_name' => $vocab)), + + if (user_access('administer projects')) { + $form['advanced']['version_format'] = array( + '#type' => 'textfield', + '#title' => t('Version format string'), + '#default_value' => $node->version_format, + '#size' => 50, + '#maxlength' => 255, + '#description' => t('Customize the format of the version strings for releases of this project.') .' '. PROJECT_RELEASE_VERSION_FORMAT_HELP .' '. t('If blank, this project will use the site-wide default (currently set to: %default)', array('%default' => variable_get('project_release_default_version_format', PROJECT_RELEASE_DEFAULT_VERSION_FORMAT))), ); } - + $form['nid'] = array('#type' => 'value', '#value' => $node->nid); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), '#weight' => 45, ); - + return $form; } + function theme_project_release_form_value($element) { return check_plain($element['#value']); } function theme_project_release_project_edit_form($form) { $output = ''; - $rows = array(); - if ($vocab = taxonomy_get_vocabulary(_project_release_get_api_vid())) { - $header = array( - check_plain($vocab->name), - t('Major version'), - t('Current default release'), - ); - } - foreach (element_children($form['default_versions']) as $tid) { - $row = array(); - $row[] = drupal_render($form['default_versions'][$tid]['name']); - unset($form['default_versions'][$tid]['major']['#title']); - $row[] = drupal_render($form['default_versions'][$tid]['major']); - $row[] = drupal_render($form['default_versions'][$tid]['current_release']); - $rows[] = $row; - } - if (count($rows)) { - $output .= '

'. t('Default versions') .'

'; - $output .= theme('table', $header, $rows); - $output .= '
'. t('This table allows you to specify the default version to download for any given %vocabulary_name. If there are releases from more than one major version number, you can select which major version should be used. For each %vocabulary_name, the current default release based on the saved major version is shown. If no official releases have been made, the development snapshot from the corresponding branch will be listed. Otherwise, the most recent official release is used.', array('%vocabulary_name' => $vocab->name)) ."
\n"; + + foreach ($form['cores'] as $core_tid => $core) { + $output .= '

'. $core['#core_name'] .'

'; + $cells = array(); + foreach (element_children($form['cores'][$core_tid]) as $key) { + $cell = array(); + $cell[] = $key; + $cell[] = drupal_render($form['cores'][$core_tid]['major'][$key]['supported']); + $cells[] = $cell; + } + $output .= theme('table', array(t('Major version', 'Supported')), $cells); } - $output .= drupal_render($form['snapshot_table']); + unset($form['cores']); + $output .= drupal_render($form['advanced']); $output .= drupal_render($form); return $output;