array('select-all')), array('data' => t('Test'), 'class' => array('simpletest_test')), array('data' => t('Description'), 'class' => array('simpletest_description')), ); // Define the images used to expand/collapse the test groups. $image_collapsed = array( '#theme' => 'image', '#uri' => 'core/misc/menu-collapsed.png', '#width' => '7', '#height' => '7', '#alt' => t('Expand'), '#title' => t('Expand'), '#suffix' => '(' . t('Expand') . ')', ); $image_extended = array( '#theme' => 'image', '#uri' => 'core/misc/menu-expanded.png', '#width' => '7', '#height' => '7', '#alt' => t('Collapse'), '#title' => t('Collapse'), '#suffix' => ' (' . t('Collapse') . ')', ); $js = array( 'images' => array( drupal_render($image_collapsed), drupal_render($image_extended), ), ); // Cycle through each test group and create a row. $rows = array(); foreach (element_children($table) as $key) { $element = &$table[$key]; $row = array(); // Make the class name safe for output on the page by replacing all // non-word/decimal characters with a dash (-). $test_class = strtolower(trim(preg_replace("/[^\w\d]/", "-", $key))); // Select the right "expand"/"collapse" image, depending on whether the // category is expanded (at least one test selected) or not. $collapsed = !empty($element['#collapsed']); $image_index = $collapsed ? 0 : 1; // Place-holder for checkboxes to select group of tests. $row[] = array('id' => $test_class, 'class' => array('simpletest-select-all')); // Expand/collapse image and group title. $row[] = array( 'data' => '
' . '', 'class' => array('simpletest-group-label'), ); $row[] = array( 'data' => ' ', 'class' => array('simpletest-group-description'), ); $rows[] = array('data' => $row, 'class' => array('simpletest-group')); // Add individual tests to group. $current_js = array( 'testClass' => $test_class . '-test', 'testNames' => array(), 'imageDirection' => $image_index, 'clickActive' => FALSE, ); // Sorting $element by children's #title attribute instead of by class name. uasort($element, 'element_sort_by_title'); // Cycle through each test within the current group. foreach (element_children($element) as $test_name) { $test = $element[$test_name]; $row = array(); $current_js['testNames'][] = $test['#id']; // Store test title and description so that checkbox won't render them. $title = $test['#title']; $description = $test['#description']; $test['#title_display'] = 'invisible'; unset($test['#description']); // Test name is used to determine what tests to run. $test['#name'] = $test_name; $row[] = array( 'data' => drupal_render($test), 'class' => array('simpletest-test-select'), ); $row[] = array( 'data' => '', 'class' => array('simpletest-test-label', 'table-filter-text-source'), ); $row[] = array( 'data' => '
' . format_string('@description (@class)', array('@description' => $description, '@class' => $test_name)) . '
', 'class' => array('simpletest-test-description', 'table-filter-text-source'), ); $rows[] = array('data' => $row, 'class' => array($test_class . '-test', ($collapsed ? 'js-hide' : ''))); } $js['simpletest-test-group-' . $test_class] = $current_js; unset($table[$key]); } // Add js array of settings. drupal_add_js(array('simpleTest' => $js), 'setting'); if (empty($rows)) { return '' . t('No tests to display.') . ''; } else { $simpletest_form_table = array( '#theme' => 'table', '#header' => $header, '#rows' => $rows, '#attributes' => array('id' => 'simpletest-form-table'), ); return drupal_render($simpletest_form_table); } } /** * Returns HTML for the summary status of a simpletest result. * * @param $variables * An associative array containing: * - form: A render element representing the form. * * @ingroup themeable */ function theme_simpletest_result_summary($variables) { $form = $variables['form']; return '
' . _simpletest_format_summary_line($form) . '
'; }