| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: admin.issue_status.inc,v 1.1 2009/04/04 07:03:28 dww Exp $ 3 4 /** 5 * @file 6 * Code for the issue status admin configuration form. 7 */ 8 9 function theme_project_issue_admin_states_form($form) { 10 drupal_add_tabledrag('project-issue-status-admin-table', 'order', 'self', 'project-issue-status-weight'); 11 $header = array( 12 array('data' => t('ID')), 13 array('data' => t('Name')), 14 array('data' => t('Weight')), 15 array('data' => t('Author may set')), 16 array('data' => t('In default queries')), 17 array('data' => t('Default status')), 18 array('data' => t('Operations')) 19 ); 20 foreach (element_children($form['status']) as $key) { 21 $rows[] = array( 22 'class' => 'draggable', 23 'data' => array( 24 drupal_render($form['status'][$key]['sid']), 25 drupal_render($form['status'][$key]['name']), 26 drupal_render($form['status'][$key]['weight']), 27 drupal_render($form['status'][$key]['author_has']), 28 drupal_render($form['status'][$key]['default_query']), 29 drupal_render($form['default_state'][$key]), 30 drupal_render($form['delete'][$key]), 31 ), 32 ); 33 } 34 $rows[] = array( 35 'class' => 'draggable', 36 'data' => array( 37 NULL, 38 drupal_render($form['status_add']['name']), 39 drupal_render($form['status_add']['weight']), 40 drupal_render($form['status_add']['author_has']), 41 drupal_render($form['status_add']['default_query']), 42 NULL, NULL, 43 ), 44 ); 45 $output = '<div>' . theme('table', $header, $rows, array('id' => 'project-issue-status-admin-table')) . '</div>'; 46 $output .= drupal_render($form); 47 return $output; 48 } 49 50 function project_issue_admin_states_form(&$form_state) { 51 $result = db_query('SELECT * FROM {project_issue_state} ORDER BY weight'); 52 $default_state = variable_get('project_issue_default_state', 1); 53 $default_states = project_issue_default_states(); 54 $form['status']['#tree'] = TRUE; 55 while ($state = db_fetch_object($result)) { 56 $options[$state->sid] = ''; 57 $form['status'][$state->sid]['sid'] = array( 58 '#type' => 'markup', 59 '#value' => $state->sid, 60 ); 61 $form['status'][$state->sid]['name'] = array( 62 '#type' => 'textfield', 63 '#default_value' => $state->name, 64 '#size' => 20, 65 '#maxlength' => 255, 66 ); 67 $form['status'][$state->sid]['weight'] = array( 68 '#type' => 'weight', 69 '#default_value' => $state->weight, 70 '#delta' => 15, 71 '#attributes' => array('class' => 'project-issue-status-weight'), 72 ); 73 $form['status'][$state->sid]['author_has'] = array( 74 '#type' => 'checkbox', 75 '#default_value' => $state->author_has, 76 ); 77 $form['status'][$state->sid]['default_query'] = array( 78 '#type' => 'checkbox', 79 '#default_value' => in_array($state->sid, $default_states), 80 ); 81 $del_link = ($state->sid != $default_state) ? l(t('Delete'), 'admin/project/project-issue-status/delete/'. $state->sid) : ''; 82 $form['delete'][$state->sid] = array( 83 '#type' => 'markup', 84 '#value' => $del_link, 85 ); 86 } 87 $form['default_state'] = array( 88 '#type' => 'radios', 89 '#options' => $options, 90 '#default_value' => $default_state, 91 ); 92 $form['status_add']['name'] = array( 93 '#type' => 'textfield', 94 '#size' => 20, 95 '#maxlength' => 255, 96 ); 97 $form['status_add']['weight'] = array( 98 '#type' => 'weight', 99 '#default_value' => 0, 100 '#delta' => 15, 101 '#attributes' => array('class' => 'project-issue-status-weight'), 102 ); 103 $form['status_add']['author_has'] = array( 104 '#type' => 'checkbox', 105 ); 106 $form['status_add']['default_query'] = array( 107 '#type' => 'checkbox', 108 ); 109 $form['submit'] = array( 110 '#type' => 'submit', 111 '#value' => t('Save'), 112 ); 113 $form['#tree'] = TRUE; 114 return $form; 115 } 116 117 /** 118 * Submit handler for project_issue_admin_states_form. 119 */ 120 function project_issue_admin_states_form_submit($form, &$form_state) { 121 // Check for and apply changes or additions to project issue status options. 122 if (isset($form_state['values']['default_state'])) { 123 variable_set('project_issue_default_state', $form_state['values']['default_state']); 124 } 125 // Update existing status options. 126 if($form_state['values']['status']) { 127 foreach ($form_state['values']['status'] as $sid => $value) { 128 $state = db_fetch_object(db_query('SELECT name, weight, author_has, default_query FROM {project_issue_state} WHERE sid = %d', $sid)); 129 // Check to see whether the record needs updating. 130 if (($state->name != $value['name']) || ($state->weight != $value['weight']) || ($state->author_has != $value['author_has']) || ($state->default_query != $value['default_query'])) { 131 db_query("UPDATE {project_issue_state} SET name = '%s', weight = %d, author_has = %d, default_query = %d WHERE sid = %d", $value['name'], $value['weight'], $value['author_has'], $value['default_query'], $sid); 132 } 133 } 134 } 135 // Add any new status options. 136 if (isset($form_state['values']['status_add']) && !empty($form_state['values']['status_add']['name'])) { 137 // Check to see whether the state already exists: 138 $issue_state = db_result(db_query("SELECT COUNT(*) FROM {project_issue_state} WHERE name = '%s'", $form_state['values']['status_add']['name'])); 139 if (empty($issue_state)) { 140 db_query("INSERT INTO {project_issue_state} (name, weight, author_has, default_query) VALUES ('%s', %d, %d, %d)", $form_state['values']['status_add']['name'], $form_state['values']['status_add']['weight'], $form_state['values']['status_add']['author_has'], $form_state['values']['status_add']['default_query']); 141 } 142 else { 143 drupal_set_message(t('Status %status already exists.', array ('%status' => $form_state['values']['status_add']['name'])), 'error'); 144 } 145 } 146 } 147 148 function project_issue_delete_state_confirm(&$form_state, $sid) { 149 $states = project_issue_state(); 150 $name = $states[$sid]; 151 152 $total = db_result(db_query('SELECT COUNT(nid) AS total FROM {project_issues} WHERE sid = %d', $sid)); 153 if ($total > 0) { 154 $form['new_sid'] = array( 155 '#type' => 'select', 156 '#title' => t('Reassign status'), 157 '#default_value' => $sid, 158 '#options' => $states, 159 '#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)), 160 ); 161 } 162 $form['sid'] = array( 163 '#type' => 'value', 164 '#value' => $sid, 165 ); 166 $form['name'] = array( 167 '#type' => 'hidden', 168 '#value' => $name, 169 ); 170 return confirm_form( 171 $form, 172 t('Are you sure you want to delete the status option %name?', array('%name' => $name)), 173 'admin/project/project-issue-status', 174 t('This action cannot be undone.'), 175 t('Delete'), t('Cancel') 176 ); 177 } 178 179 function project_issue_delete_state_confirm_validate($form, &$form_state) { 180 if ($form_state['values']['new_sid'] == $form_state['values']['sid']) { 181 form_set_error('new_sid', t('Choose a new issue status for existing issues of status %name.', array('%name' => $form_state['values']['name']))); 182 } 183 } 184 185 function project_issue_delete_state_confirm_submit($form, &$form_state) { 186 if ($form_state['values']['new_sid']) { 187 db_query('UPDATE {project_issues} SET sid = %d WHERE sid = %d', $form_state['values']['new_sid'], $form_state['values']['sid']); 188 } 189 db_query('DELETE FROM {project_issue_state} WHERE sid = %d', $form_state['values']['sid']); 190 drupal_set_message(t('Project issue status %issue deleted.', array('%issue' => $form_state['values']['name']))); 191 $form_state['redirect'] ='admin/project/project-issue-status'; 192 } 193
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |