diff --git a/core/modules/simpletest/css/simpletest.module.css b/core/modules/simpletest/css/simpletest.module.css
index 86bd04b..0337e62 100644
--- a/core/modules/simpletest/css/simpletest.module.css
+++ b/core/modules/simpletest/css/simpletest.module.css
@@ -30,8 +30,12 @@ th.simpletest_test {
background-color: #edf5fa;
color: #494949;
}
+.simpletest-test-select .form-item {
+ margin-bottom: 0;
+ margin-top: 0;
+}
-table#simpletest-form-table tr.simpletest-group label {
+#simpletest-form-table tr.simpletest-group label {
display: inline;
}
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
index 3eb42ce..61c6c61 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Form/SimpletestResultsForm.php
@@ -119,7 +119,6 @@ public function buildForm(array $form, array &$form_state, $test_id = NULL) {
'#title' => t('Results'),
);
$form['result']['summary'] = $summary = array(
- '#theme' => 'simpletest_result_summary',
'#pass' => 0,
'#fail' => 0,
'#exception' => 0,
@@ -170,7 +169,7 @@ public function buildForm(array $form, array &$form_state, $test_id = NULL) {
$form['result']['summary']['#' . $assertion->status]++;
}
$form['result']['results'][$group]['table'] = array(
- '#theme' => 'table',
+ '#type' => 'table',
'#header' => $header,
'#rows' => $rows,
);
@@ -181,11 +180,25 @@ public function buildForm(array $form, array &$form_state, $test_id = NULL) {
// Store test group (class) as for use in filter.
$filter[$group_summary['#ok'] ? 'pass' : 'fail'][] = $group;
+
+ // Render summary information.
+ $group_summary += array(
+ '#prefix' => '
',
+ '#markup' => _simpletest_format_summary_line($group_summary),
+ '#suffix' => '
',
+ );
}
// Overal summary status.
$form['result']['summary']['#ok'] = $form['result']['summary']['#fail'] + $form['result']['summary']['#exception'] == 0;
+ // Render overall summary.
+ $form['result']['summary'] += array(
+ '#prefix' => '',
+ '#markup' => _simpletest_format_summary_line($form['result']['summary']),
+ '#suffix' => '
',
+ );
+
// Actions.
$form['#action'] = url('admin/config/development/testing/results/re-run');
$form['action'] = array(
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index 4004dd3..8f74c34 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -77,10 +77,7 @@ function simpletest_theme() {
'simpletest_test_table' => array(
'render element' => 'table',
'file' => 'simpletest.theme.inc',
- ),
- 'simpletest_result_summary' => array(
- 'render element' => 'form',
- 'file' => 'simpletest.theme.inc',
+ 'template' => 'simpletest-test-table',
),
);
}
diff --git a/core/modules/simpletest/simpletest.theme.inc b/core/modules/simpletest/simpletest.theme.inc
index 31cbb02..ad09954 100644
--- a/core/modules/simpletest/simpletest.theme.inc
+++ b/core/modules/simpletest/simpletest.theme.inc
@@ -5,27 +5,22 @@
* Page callbacks for simpletest module.
*/
+use Drupal\Core\Template\Attribute;
+
/**
- * Returns an HTML table for a test list generated by simpletest_test_form().
+ * Prepares variables for test list table templates.
+ *
+ * Default template: simpletest-test-table.html.twig.
*
- * @param $variables
+ * @param array $variables
* An associative array containing:
* - table: A render element representing the table.
- *
- * @ingroup themeable
*/
-function theme_simpletest_test_table($variables) {
+function template_preprocess_simpletest_test_table(&$variables) {
$table = $variables['table'];
drupal_add_library('simpletest', 'drupal.simpletest');
- // Create header for test selection table.
- $header = array(
- array('class' => 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',
@@ -53,36 +48,25 @@ function theme_simpletest_test_table($variables) {
);
// Cycle through each test group and create a row.
- $rows = array();
+
+ $variables['test_groups'] = array();
foreach (element_children($table) as $key) {
$element = &$table[$key];
- $row = array();
+
+ $variables['test_groups'][$key] = new stdClass();
// 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)));
+ $variables['test_groups'][$key]->test_class = $test_class;
// 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'));
+ $variables['test_groups'][$key]->label = $key;
// Add individual tests to group.
$current_js = array(
@@ -95,69 +79,40 @@ function theme_simpletest_test_table($variables) {
// Sorting $element by children's #title attribute instead of by class name.
uasort($element, 'element_sort_by_title');
+ $variables['test_groups'][$key]->tests = array();
+
// Cycle through each test within the current group.
foreach (element_children($element) as $test_name) {
$test = $element[$test_name];
- $row = array();
+ $test_data = new stdClass();
+ $test_data->attributes = new Attribute(array('class' => array()));
+ $test_data->id = $test['#id'];
$current_js['testNames'][] = $test['#id'];
// Store test title and description so that checkbox won't render them.
- $title = $test['#title'];
- $description = $test['#description'];
+ $test_data->title = $test['#title'];
+ $test_data->description = $test['#description'];
+ unset($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' : '')));
+ // Add the checkbox field.
+ $test_data->field = $test;
+
+ $test_data->attributes['class'][] = $test_class . '-test';
+ $test_data->attributes['class'][] = ($collapsed ? 'js-hide' : '');
+
+ $variables['test_groups'][$key]->tests[$test_name] = $test_data;
}
$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) . '
';
+ // Add responsive table script to page.
+ drupal_add_library('system', 'drupal.tableresponsive');
}
diff --git a/core/modules/simpletest/templates/simpletest-test-table.html.twig b/core/modules/simpletest/templates/simpletest-test-table.html.twig
new file mode 100644
index 0000000..a1e0758
--- /dev/null
+++ b/core/modules/simpletest/templates/simpletest-test-table.html.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of simpletest test table.
+ *
+ * Available variables:
+ * - table: A simpletest table.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_simpletest_test_table()
+ *
+ * @ingroup themeable
+ */
+#}
+