diff --git a/src/Element/Tablefield.php b/src/Element/Tablefield.php index e284a4c..3d4cda0 100644 --- a/src/Element/Tablefield.php +++ b/src/Element/Tablefield.php @@ -35,6 +35,7 @@ class Tablefield extends FormElement { array($class, 'processTablefield'), ), '#theme_wrappers' => array('form_element'), + '#addrow' => FALSE, ); } @@ -49,9 +50,11 @@ class Tablefield extends FormElement { // this is being set in rebuild and import ajax calls $storage = NestedArray::getValue($form_state->getStorage(), $element['#parents']); + //fetch addrow value if ($storage) { $element['#cols'] = $storage['tablefield']['rebuild']['cols']; $element['#rows'] = $storage['tablefield']['rebuild']['rows']; + $element['#add_row'] = $storage['tablefield']['addrow']['row_value']; } $element['#tree'] = TRUE; @@ -67,10 +70,17 @@ class Tablefield extends FormElement { $element['tablefield']['table'] = array( '#type' => 'table', ); + //assign value + $row_value = isset($element['#add_row']) ? $element['#add_row'] : 0; $rows = isset($element['#rows']) ? $element['#rows'] : \Drupal::config('tablefield.settings')->get('rows'); $cols = isset($element['#cols']) ? $element['#cols'] : \Drupal::config('tablefield.settings')->get('cols'); +//check condition + if($row_value!=0) { + $rows = $row_value; + } + for ($i = 0; $i < $rows; $i++) { for ($ii = 0; $ii < $cols; $ii++) { if (!empty($element['#locked_cells'][$i][$ii]) && !empty($element['#lock'])) { @@ -95,6 +105,31 @@ class Tablefield extends FormElement { } } } + + //To change number of rows. + + if (!empty($element['#addrow'])) { + $element['tablefield']['addrow']['row_value'] = array( + '#title' => t('How many rows'), + '#type' => 'hidden', + '#default_value' => $rows, + ); + $element['tablefield']['addrow']['addrow'] = array( + '#type' => 'submit', + '#value' => t('Add Row'), + '#name' => 'tablefield-addrow-'. $id, + '#attributes' => array( + 'class' => array('tablefield-addrow'), + ), + '#submit' => array(array(get_called_class(), 'submitCallbackRebuild')), + '#ajax' => array( + 'callback' => 'Drupal\tablefield\Element\Tablefield::ajaxCallbackRebuild', + 'progress' => array('type' => 'throbber', 'message' => NULL), + 'wrapper' => 'tablefield-'. $id .'-wrapper', + 'effect' => 'fade', + ), + ); + } // If no rebuild, we pass along the rows/cols as a value. // Otherwise, we will provide form elements to specify the size and ajax rebuild. @@ -230,6 +265,13 @@ class Tablefield extends FormElement { NestedArray::setValue($form_state->getStorage(), $parents, $imported_tablefield['rebuild']); } } + //ajax call + else if (isset($triggering_element['#name']) && $triggering_element['#name'] == 'tablefield-addrow-'. $id) { + $parents[] = 'addrow'; + //$rows = $value['table']['setrow'] + 1; + $value['addrow']['row_value'] = $value['rebuild']['rows'] + 1; + NestedArray::setValue($form_state->getStorage(), $parents, $value['addrow']); + } $form_state->setRebuild(); } diff --git a/src/Plugin/Field/FieldWidget/TablefieldWidget.php b/src/Plugin/Field/FieldWidget/TablefieldWidget.php index a974986..224438b 100644 --- a/src/Plugin/Field/FieldWidget/TablefieldWidget.php +++ b/src/Plugin/Field/FieldWidget/TablefieldWidget.php @@ -70,6 +70,7 @@ class TablefieldWidget extends WidgetBase { '#locked_cells' => !empty($field_default->value) ? $field_default->value : array(), '#rebuild' => \Drupal::currentUser()->hasPermission('rebuild tablefield'), '#import' => \Drupal::currentUser()->hasPermission('import tablefield'), + '#addrow' => \Drupal::currentUser()->hasPermission('addrow tablefield'), // add permission ) + $element; if ($is_field_settings_default_widget_form) { diff --git a/tablefield.permissions.yml b/tablefield.permissions.yml index 1090321..27652e6 100644 --- a/tablefield.permissions.yml +++ b/tablefield.permissions.yml @@ -8,4 +8,7 @@ import tablefield: title: 'Import into any tablefield' configure tablefield: - title: 'Allow changes in the global tablefield module configuration' \ No newline at end of file + title: 'Allow changes in the global tablefield module configuration' + #define permission +addrow tablefield: + title: 'To change row in tablefield' \ No newline at end of file