function clients_connection_test_form in Web Service Clients 7
Same name and namespace in other branches
- 6.2 clients.connection.admin.inc \clients_connection_test_form()
 - 7.3 includes/clients.connection.admin.inc \clients_connection_test_form()
 - 7.2 clients.connection.admin.inc \clients_connection_test_form()
 
Page callback to test a connection.
Parameters
$cid: The id of a connection.
1 string reference to 'clients_connection_test_form'
- clients_menu in ./
clients.module  - Implementation of hook_menu()
 
File
- ./
clients.connection.admin.inc, line 247  - clients.connection.admin.inc Page callbacks relating to client connection admin.
 
Code
function clients_connection_test_form(&$form_state, $cid) {
  $connection = clients_get_connection($cid);
  $form['#connection'] = $connection;
  $form['connection'] = array(
    '#type' => 'fieldset',
    '#title' => t('Connection details'),
  );
  $items[] = t('Type') . ': ' . $connection->type;
  $items[] = t('Name') . ': ' . check_plain($connection->name);
  $items[] = t('Endpoint') . ': ' . $connection->endpoint;
  $form['connection']['details'] = array(
    '#value' => theme('item_list', $items),
  );
  // Buttons. These are themed into a vertical list with the description text alongside each one.
  $form['buttons'] = array(
    //'#theme' => 'uprpc_manual_form_button',
    '#tree' => TRUE,
  );
  // Get the core buttons provided by the connection class.
  $buttons = $connection
    ->getTestOperations($form_state, $cid);
  // Allow applications that use this connection to add their own test buttons.
  drupal_alter('client_connection_test_buttons', $buttons, $form_state, $cid);
  // Some processing of the buttons to simplify the method of specifying them.
  // see ClientsServicesDrupal_5::getTestOperations for an example of how this works.
  foreach ($buttons as $key => $button) {
    // If the button is just a plain button, wrap it in a fieldset.
    // This allows you to return just a button if there are no extra form elements.
    if ($button['#type'] == 'submit') {
      $form['buttons'][$key] = array(
        '#type' => 'fieldset',
      );
      $form['buttons'][$key]['button'] = $button;
    }
    else {
      $form['buttons'][$key] = $button;
    }
    // In all cases, show the description for the action.
    /*
    $form['buttons'][$key]['description'] = array(
      '#value' => $form['buttons'][$key]['button']['#description'],
      '#weight' => -10,
    );
    */
    $form['buttons'][$key]['#description'] = $form['buttons'][$key]['button']['#description'];
    $form['buttons'][$key]['#tree'] = TRUE;
    $form['buttons'][$key]['button']['#key'] = $key;
  }
  // TODO: allow applications to add buttons to this connection.
  // Show the results that the button handler returned.
  foreach (array_keys($form['buttons']) as $button_id) {
    // If there is a key in the form storage with the same ID as a button,
    // the it is the result of a previous manual test.
    if (isset($form_state['storage'][$button_id])) {
      $form['buttons'][$button_id]['results'] = array(
        '#type' => 'fieldset',
        '#title' => t('Results'),
        '#collapsible' => TRUE,
      );
      $title = $form['buttons'][$button_id]['#value'];
      $data = check_plain(print_r($form_state['storage'][$button_id], TRUE));
      $form['buttons'][$button_id]['results'][$button_id] = array(
        '#type' => 'markup',
        '#value' => "<h3>{$title}</h3>" . "<pre>{$data}</pre>",
      );
      // Clear the storage so it doesn't just accumulate.
      unset($form_state['storage'][$button_id]);
    }
  }
  // TODO: show a message if no buttons at all!
  return $form;
}