Loading core/includes/form.inc +22 −27 Original line number Diff line number Diff line Loading @@ -1348,16 +1348,17 @@ function form_process_container($element, FormStateInterface $form_state) { } /** * Returns HTML for a table with radio buttons or checkboxes. * Prepares a 'tableselect' #type element for rendering. * * @param $variables * An associative array containing: * - element: An associative array containing the properties and children of * Adds a column of radio buttons or checkboxes for each row of a table. * * @param array $element * An associative array containing the properties and children of * the tableselect element. Properties used: #header, #options, #empty, * and #js_select. The #options property is an array of selection options; * each array element of #options is an array of properties. These * properties can include #attributes, which is added to the * table row's HTML attributes; see theme_table(). An example of per-row * table row's HTML attributes; see table.html.twig. An example of per-row * options: * @code * $options = array( Loading Loading @@ -1387,13 +1388,10 @@ function form_process_container($element, FormStateInterface $form_state) { * ); * @endcode * * @ingroup themeable * @return array * The processed element. */ function theme_tableselect($variables) { $element = $variables['element']; $table = array( '#type' => 'table', ); function form_pre_render_tableselect($element) { $rows = array(); $header = $element['#header']; if (!empty($element['#options'])) { Loading Loading @@ -1433,7 +1431,7 @@ function theme_tableselect($variables) { // checkboxes/radios in the first table column. if ($element['#js_select']) { // Add a "Select all" checkbox. $table['#attached']['library'][] = 'core/drupal.tableselect'; $element['#attached']['library'][] = 'core/drupal.tableselect'; array_unshift($header, array('class' => array('select-all'))); } else { Loading @@ -1442,14 +1440,11 @@ function theme_tableselect($variables) { array_unshift($header, ''); } } $table += array( '#header' => $header, '#rows' => $rows, '#empty' => $element['#empty'], '#attributes' => $element['#attributes'], ); return drupal_render($table); $element['#header'] = $header; $element['#rows'] = $rows; return $element; } /** Loading Loading @@ -1541,7 +1536,7 @@ function form_process_tableselect($element) { * The processed element. * * @see form_process_tableselect() * @see theme_tableselect() * @see form_pre_render_tableselect() */ function form_process_table($element, FormStateInterface $form_state) { if ($element['#tableselect']) { Loading core/includes/theme.inc +0 −3 Original line number Diff line number Diff line Loading @@ -2705,9 +2705,6 @@ function drupal_common_theme() { 'render element' => 'element', 'template' => 'textarea', ), 'tableselect' => array( 'render element' => 'element', ), 'form_element' => array( 'render element' => 'element', 'template' => 'form-element', Loading core/modules/system/system.module +4 −1 Original line number Diff line number Diff line Loading @@ -529,10 +529,13 @@ function system_element_info() { '#input' => TRUE, '#js_select' => TRUE, '#multiple' => TRUE, '#responsive' => TRUE, '#sticky' => FALSE, '#pre_render' => array('drupal_pre_render_table', 'form_pre_render_tableselect'), '#process' => array('form_process_tableselect'), '#options' => array(), '#empty' => '', '#theme' => 'tableselect', '#theme' => 'table__tableselect', ); // Form structure. Loading Loading
core/includes/form.inc +22 −27 Original line number Diff line number Diff line Loading @@ -1348,16 +1348,17 @@ function form_process_container($element, FormStateInterface $form_state) { } /** * Returns HTML for a table with radio buttons or checkboxes. * Prepares a 'tableselect' #type element for rendering. * * @param $variables * An associative array containing: * - element: An associative array containing the properties and children of * Adds a column of radio buttons or checkboxes for each row of a table. * * @param array $element * An associative array containing the properties and children of * the tableselect element. Properties used: #header, #options, #empty, * and #js_select. The #options property is an array of selection options; * each array element of #options is an array of properties. These * properties can include #attributes, which is added to the * table row's HTML attributes; see theme_table(). An example of per-row * table row's HTML attributes; see table.html.twig. An example of per-row * options: * @code * $options = array( Loading Loading @@ -1387,13 +1388,10 @@ function form_process_container($element, FormStateInterface $form_state) { * ); * @endcode * * @ingroup themeable * @return array * The processed element. */ function theme_tableselect($variables) { $element = $variables['element']; $table = array( '#type' => 'table', ); function form_pre_render_tableselect($element) { $rows = array(); $header = $element['#header']; if (!empty($element['#options'])) { Loading Loading @@ -1433,7 +1431,7 @@ function theme_tableselect($variables) { // checkboxes/radios in the first table column. if ($element['#js_select']) { // Add a "Select all" checkbox. $table['#attached']['library'][] = 'core/drupal.tableselect'; $element['#attached']['library'][] = 'core/drupal.tableselect'; array_unshift($header, array('class' => array('select-all'))); } else { Loading @@ -1442,14 +1440,11 @@ function theme_tableselect($variables) { array_unshift($header, ''); } } $table += array( '#header' => $header, '#rows' => $rows, '#empty' => $element['#empty'], '#attributes' => $element['#attributes'], ); return drupal_render($table); $element['#header'] = $header; $element['#rows'] = $rows; return $element; } /** Loading Loading @@ -1541,7 +1536,7 @@ function form_process_tableselect($element) { * The processed element. * * @see form_process_tableselect() * @see theme_tableselect() * @see form_pre_render_tableselect() */ function form_process_table($element, FormStateInterface $form_state) { if ($element['#tableselect']) { Loading
core/includes/theme.inc +0 −3 Original line number Diff line number Diff line Loading @@ -2705,9 +2705,6 @@ function drupal_common_theme() { 'render element' => 'element', 'template' => 'textarea', ), 'tableselect' => array( 'render element' => 'element', ), 'form_element' => array( 'render element' => 'element', 'template' => 'form-element', Loading
core/modules/system/system.module +4 −1 Original line number Diff line number Diff line Loading @@ -529,10 +529,13 @@ function system_element_info() { '#input' => TRUE, '#js_select' => TRUE, '#multiple' => TRUE, '#responsive' => TRUE, '#sticky' => FALSE, '#pre_render' => array('drupal_pre_render_table', 'form_pre_render_tableselect'), '#process' => array('form_process_tableselect'), '#options' => array(), '#empty' => '', '#theme' => 'tableselect', '#theme' => 'table__tableselect', ); // Form structure. Loading