function theme_simpletest_test_table in SimpleTest 6.2
Same name and namespace in other branches
- 7.2 simpletest.pages.inc \theme_simpletest_test_table()
- 7 simpletest.pages.inc \theme_simpletest_test_table()
Returns HTML for a test list generated by simpletest_test_form() into a table.
Parameters
$table: Form array representing the table.
1 theme call to theme_simpletest_test_table()
- simpletest_test_form in ./
simpletest.pages.inc - List tests arranged in groups that can be selected and run.
File
- ./
simpletest.pages.inc, line 67 - Page callbacks for simpletest module.
Code
function theme_simpletest_test_table($table) {
drupal_add_css(drupal_get_path('module', 'simpletest') . '/simpletest.css');
drupal_add_js(drupal_get_path('module', 'simpletest') . '/simpletest.js');
// Create header for test selection table.
$header = array(
theme('table_select_header_cell'),
array(
'data' => t('Test'),
'class' => 'simpletest_test',
),
array(
'data' => t('Description'),
'class' => 'simpletest_description',
),
);
// Define the images used to expand/collapse the test groups.
$js = array(
'images' => array(
theme('image', 'misc/menu-collapsed.png', 'Expand', 'Expand') . ' <a href="#" class="simpletest-collapse">(' . t('Expand') . ')</a>',
theme('image', 'misc/menu-expanded.png', 'Collapse', 'Collapse') . ' <a href="#" class="simpletest-collapse">(' . t('Collapse') . ')</a>',
),
);
// 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' => 'simpletest-select-all',
);
// Expand/collapse image and group title.
$row[] = array(
'data' => '<div class="simpletest-image" id="simpletest-test-group-' . $test_class . '"></div>' . '<label for="' . $test_class . '-select-all" class="simpletest-group-label">' . $key . '</label>',
'class' => 'simpletest-group-label',
);
$row[] = array(
'data' => ' ',
'class' => 'simpletest-group-description',
);
$rows[] = array(
'data' => $row,
'class' => '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, '_simpletest_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'];
unset($test['#title']);
unset($test['#description']);
// Test name is used to determine what tests to run.
$test['#name'] = $test_name;
$row[] = array(
'data' => drupal_render($test),
'class' => 'simpletest-test-select',
);
$row[] = array(
'data' => '<label for="' . $test['#id'] . '">' . $title . '</label>',
'class' => 'simpletest-test-label',
);
$row[] = array(
'data' => '<div class="description">' . $description . '</div>',
'class' => 'simpletest-test-description',
);
$rows[] = array(
'data' => $row,
'class' => $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 '<strong>' . t('No tests to display.') . '</strong>';
}
else {
return theme('table', $header, $rows, array(
'id' => 'simpletest-form-table',
));
}
}