[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/project_issue/includes/ -> admin.issue_status.inc (source)

   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  


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7