? LICENSE.txt ? fakeadd ? generate ? p_i_p.patch ? scripts ? search_index ? theme ? translations ? views Index: issue.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/issue.inc,v retrieving revision 1.354 diff -u -p -r1.354 issue.inc --- issue.inc 18 Jun 2009 03:28:55 -0000 1.354 +++ issue.inc 7 Feb 2010 14:03:19 -0000 @@ -236,7 +236,13 @@ function project_issue_default_states() } function project_issue_priority($priority = 0) { - $priorities = array(1 => t('critical'), t('normal'), t('minor')); + static $priorities; + if (!isset($priorities)) { + $result = db_query('SELECT priority_id, name FROM {project_issue_priorities} ORDER BY weight'); + while ($priority = db_fetch_object($result)) { + $priorities[$priority->priority_id] = $priority->name; + } + } return $priority ? $priorities[$priority] : $priorities; } Index: project_issue.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/project_issue.install,v retrieving revision 1.64 diff -u -p -r1.64 project_issue.install --- project_issue.install 21 Aug 2009 22:51:31 -0000 1.64 +++ project_issue.install 7 Feb 2010 14:03:19 -0000 @@ -249,6 +249,32 @@ function project_issue_schema() { ), ); + $schema['project_issue_priorities'] = array( + 'description' => 'The issue priorities.', + 'fields' => array( + 'priority' => array( + 'description' => 'The priority for this issue after this comment was made.', + 'type' => 'serial', + 'not null' => TRUE, + ), + 'name' => array( + 'description' => 'Display-friendly name for this priority.', + 'type' => 'varchar', + 'length' => 64, + 'not null' => TRUE, + 'default' => '', + ), + 'weight' => array( + 'description' => 'Weight for this priority, used when ordering priorities.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'primary key' => array('priority'), + ); + $schema['project_subscriptions'] = array( 'description' => 'Table keeping track of per-user project_issue subscriptions.', 'fields' => array( @@ -364,6 +390,9 @@ function project_issue_install() { variable_set('comment_upload_project_issue', 1); // Enable file attachments for issues. variable_set('upload_project_issue', 1); + db_query("INSERT INTO {project_issue_priorities} (priority, name, weight) VALUES (1, 'critical', 1)"); + db_query("INSERT INTO {project_issue_priorities} (priority, name, weight) VALUES (2, 'normal', 2)"); + db_query("INSERT INTO {project_issue_priorities} (priority, name, weight) VALUES (3, 'minor', 3)"); } /** @@ -445,4 +474,3 @@ function project_issue_update_6002() { } return $ret; } - Index: project_issue.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/project_issue.module,v retrieving revision 1.174 diff -u -p -r1.174 project_issue.module --- project_issue.module 6 Aug 2009 23:35:34 -0000 1.174 +++ project_issue.module 7 Feb 2010 14:03:20 -0000 @@ -101,6 +101,19 @@ function project_issue_menu() { 'file' => 'includes/admin.settings.inc', ); + // Administrative pages + $items['admin/project/project-issue-priorities'] = array( + 'title' => 'Project issue priorities', + 'description' => 'Configure what issue priorities should be used on your site.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('project_issue_admin_priorities_form'), + 'access arguments' => array('administer projects'), + 'weight' => 1, + 'type' => MENU_NORMAL_ITEM, + 'file' => 'includes/admin.priorities.inc', + ); + + // Administer issue status settings $items['admin/project/project-issue-status'] = array( 'title' => 'Project issue status options', @@ -325,6 +338,12 @@ function project_issue_theme() { 'form' => NULL, ), ), + 'project_issue_admin_priorities_form' => array( + 'file' => 'includes/admin.priorities.inc', + 'arguments' => array( + 'form' => NULL, + ), + ), 'project_issue_project_edit_form' => array( 'file' => 'includes/project_edit_issues.inc', 'arguments' => array( @@ -527,7 +546,7 @@ function project_issue_access($op, $node * Helper to trim all elements in an array. */ function project_issue_trim(&$item, $key) { - $item = trim($item); + $item = trim($item); } /** @@ -621,7 +640,7 @@ function project_issue_add_auto_followup * ); * * @return - * TRUE if the comment was successfully added to the requested issue, + * TRUE if the comment was successfully added to the requested issue, * otherwise FALSE. */ function project_issue_add_followup($changes) { @@ -1760,4 +1779,3 @@ function project_issue_project_page_link $links['development']['links'] = $patches + $links['development']['links']; } } - Index: includes/admin.priorities.inc =================================================================== RCS file: includes/admin.priorities.inc diff -N includes/admin.priorities.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ includes/admin.priorities.inc 7 Feb 2010 14:03:20 -0000 @@ -0,0 +1,153 @@ +priority]['name'] = array( + '#type' => 'textfield', + '#default_value' => $priority->name, + '#size' => 20, + '#maxlength' => 255, + ); + $form['priority'][$priority->priority]['weight'] = array( + '#type' => 'weight', + '#default_value' => $priority->weight, + '#delta' => 15, + '#attributes' => array('class' => 'project-issue-priority-weight'), + ); + $exists = db_result(db_query_range('SELECT priority FROM {project_issues} WHERE priority = %d', 0, 1)) || db_result(db_query_range('SELECT priority FROM {project_issue_comments} WHERE priority = %d', 0, 1)); + $del_link = $exists ? '' : l(t('Delete'), 'admin/project/project-issue-priority/delete/'. $priority->priority); + $form['delete'][$priority->priority] = array( + '#type' => 'markup', + '#value' => $del_link, + ); + } + $form['priority_add']['name'] = array( + '#type' => 'textfield', + '#size' => 20, + '#maxlength' => 255, + ); + $form['priority_add']['weight'] = array( + '#type' => 'weight', + '#default_value' => 0, + '#delta' => 15, + '#attributes' => array('class' => 'project-issue-priority-weight'), + ); + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Save'), + ); + $form['#tree'] = TRUE; + return $form; +} + +/** + * Submit handler for project_issue_admin_states_form. + */ +function project_issue_admin_priorities_form_submit($form, &$form_state) { + // Update existing priorities. + foreach ($form_state['values']['priority'] as $priority_id => $value) { + $priority = db_fetch_object(db_query('SELECT priority, name, weight FROM {project_issue_priorities} WHERE priority = %d', $priority_id)); + // Check to see whether the record needs updating. + if ($priority->name != $value['name'] || (string)$priority->weight !== (string)$value['weight']) { + db_query("UPDATE {project_issue_priorities} SET name = '%s', weight = %d WHERE priority = %d", $value['name'], $value['weight'], $priority_id); + } + } + // Add new priority. + if ($form_state['values']['priority_add']['name']) { + // Check to see whether the state already exists: + $issue_state = db_result(db_query("SELECT COUNT(*) FROM {project_issue_priorities} WHERE name = '%s'", $form_state['values']['priority_add']['name'])); + if (empty($issue_state)) { + db_query("INSERT INTO {project_issue_priorities} (name, weight) VALUES ('%s', %d)", $form_state['values']['priority_add']['name'], $form_state['values']['priority_add']['weight']); + } + else { + drupal_set_message(t('Priority %priority already exists.', array ('%priority' => $form_state['values']['priority_add']['name'])), 'error'); + } + } +} + +function theme_project_issue_admin_priorities_form($form) { + drupal_add_tabledrag('project-issue-admin-priority-table', 'order', 'self', 'project-issue-priority-weight'); + $header = array( + t('Priority'), + t('Weight'), + t('Operations'), + ); + foreach (element_children($form['priority']) as $key) { + $rows[] = array( + 'class' => 'draggable', + 'data' => array( + drupal_render($form['priority'][$key]['name']), + drupal_render($form['priority'][$key]['weight']), + drupal_render($form['delete'][$key]), + ), + ); + } + $rows[] = array( + 'class' => 'draggable', + 'data' => array( + drupal_render($form['priority_add']['name']), + drupal_render($form['priority_add']['weight']), + ' ', + ), + ); + $output = '
' . theme('table', $header, $rows, array('id' => 'project-issue-admin-priority-table')) . '
'; + $output .= drupal_render($form); + return $output; +} + +/* +function project_issue_delete_state_confirm(&$form_state, $sid) { + $states = project_issue_state(); + $name = $states[$sid]; + + $total = db_result(db_query('SELECT COUNT(nid) AS total FROM {project_issues} WHERE sid = %d', $sid)); + if ($total > 0) { + $form['new_sid'] = array( + '#type' => 'select', + '#title' => t('Reassign status'), + '#default_value' => $sid, + '#options' => $states, + '#description' => t('There are !total existing issues with the status of @name. Please select a new status for these issues.', array('!total' => $total, '@name' => $name)), + ); + } + $form['sid'] = array( + '#type' => 'value', + '#value' => $sid, + ); + $form['name'] = array( + '#type' => 'hidden', + '#value' => $name, + ); + return confirm_form( + $form, + t('Are you sure you want to delete the status option %name?', array('%name' => $name)), + 'admin/project/project-issue-status', + t('This action cannot be undone.'), + t('Delete'), t('Cancel') + ); +} + +function project_issue_delete_state_confirm_validate($form, &$form_state) { + if ($form_state['values']['new_sid'] == $form_state['values']['sid']) { + form_set_error('new_sid', t('Choose a new issue status for existing issues of status %name.', array('%name' => $form_state['values']['name']))); + } +} + +function project_issue_delete_state_confirm_submit($form, &$form_state) { + if ($form_state['values']['new_sid']) { + db_query('UPDATE {project_issues} SET sid = %d WHERE sid = %d', $form_state['values']['new_sid'], $form_state['values']['sid']); + } + db_query('DELETE FROM {project_issue_state} WHERE sid = %d', $form_state['values']['sid']); + drupal_set_message(t('Project issue status %issue deleted.', array('%issue' => $form_state['values']['name']))); + $form_state['redirect'] ='admin/project/project-issue-status'; +} +*/