You are here

function theme_workflow_admin_ui_states_form in Workflow 7.2

File

workflow_admin_ui/workflow_admin_ui.page.states.inc, line 146
Provides an Admin UI page for the Workflow States.

Code

function theme_workflow_admin_ui_states_form($variables) {
  $form = $variables['form'];
  $output = '';
  $table_id = 'workflow_admin_ui_states';
  $table = array(
    'rows' => array(),
    'header' => array(
      t('State'),
      t('Weight'),
      t('Active'),
      t('Reassign'),
      t('Count'),
      array(
        'data' => t('Operations'),
        'class' => 'state-ops',
      ),
    ),
    'attributes' => array(
      'id' => $table_id,
      'style' => 'width: auto;',
    ),
  );

  // The output needs to have the action links at the top.
  $output .= drupal_render($form['action-links']);

  // Iterate over each element in our $form['states'] array.
  foreach (element_children($form['states']) as $id) {

    // We are now ready to add each element of our $form data to the rows
    // array, so that they end up as individual table cells when rendered
    // in the final table.  We run each element through the drupal_render()
    // function to generate the final html markup for that element.
    $table['rows'][] = array(
      'data' => array(
        // Add our 'name' column.
        // array('data' => drupal_render($form['states'][$id]['state']), 'class' => 'state-name'),
        array(
          'data' => drupal_render($form['states'][$id]['state']) . drupal_render($form['states'][$id]['name']),
          'class' => 'state-name',
        ),
        // Add our 'weight' column.
        drupal_render($form['states'][$id]['weight']),
        // Add our 'status' column.
        array(
          'data' => drupal_render($form['states'][$id]['status']),
          'class' => 'state-status',
        ),
        // Add our 'reassign' column.
        array(
          'data' => drupal_render($form['states'][$id]['reassign']),
          'class' => 'state-reassign',
        ),
        // Add our 'count' column.
        array(
          'data' => $form['states'][$id]['count']['#value'],
          'class' => 'state-count',
        ),
        // Add our 'operations' column.
        array(
          'data' => drupal_render($form['states'][$id]['ops']),
          'class' => 'state-ops',
        ),
      ),
      // To support the tabledrag behavior, we need to assign each row of the
      // table a class attribute of 'draggable'. This will add the 'draggable'
      // class to the <tr> element for that row when the final table is
      // rendered.
      'class' => array(
        'draggable',
      ),
    );
  }
  $output .= theme('table', $table);

  // And then render any remaining form elements (such as our submit button).
  $output .= drupal_render_children($form);

  // We now call the drupal_add_tabledrag() function in order to add the
  // tabledrag.js goodness onto our page.
  //
  // For a basic sortable table, we need to pass it:
  // - the $table_id of our <table> element,
  // - the $action to be performed on our form items ('order'),
  // - a string describing where $action should be applied ('siblings'),
  // - and the class of the element containing our 'weight' element.
  drupal_add_tabledrag($table_id, 'order', 'sibling', 'state-weight');
  return $output;
}