5 * Contains \Drupal\draggableviews\Plugin\views\field\DraggableViewsField.
8 namespace Drupal\draggableviews\Plugin\views\field;
10 use Drupal\Core\Form\FormStateInterface;
11 use Drupal\draggableviews\DraggableViews;
12 use Drupal\system\Plugin\views\field\BulkForm;
13 use Drupal\Core\Render\Markup;
16 * Defines a draggableviews form element.
18 * @ViewsField("draggable_views_field")
20 class DraggableViewsField extends BulkForm {
25 protected function defineOptions() {
26 $options = parent::defineOptions();
33 public function buildOptionsForm(&$form, FormStateInterface $form_state) {
34 parent::buildOptionsForm($form, $form_state);
40 // @codingStandardsIgnoreStart
41 public function render_item($count, $item) {
42 // @codingStandardsIgnoreEnd
43 // Using internal method. @todo Reckeck after drupal stable release.
44 return Markup::create('<!--form-item-' . $this->options['id'] . '--' . $this->view->row_index . '-->');
50 public function viewsForm(&$form, FormStateInterface $form_state) {
51 $form[$this->options['id']] = [
55 $draggableviews = new DraggableViews($this->view);
57 foreach ($this->view->result as $row_index => $row) {
58 $form[$this->options['id']][$row_index] = array(
62 // Item to keep id of the entity.
63 $form[$this->options['id']][$row_index]['id'] = array(
65 '#value' => $row->{$this->definition['entity field']},
66 '#attributes' => array('class' => array('draggableviews-id')),
70 $form[$this->options['id']][$row_index]['parent'] = array(
72 '#default_value' => $draggableviews->getParent($row_index),
73 '#attributes' => array('class' => array('draggableviews-parent')),
77 if (\Drupal::currentUser()->hasPermission('access draggableviews')) {
79 'table_id' => $draggableviews->getHtmlId(),
81 'relationship' => 'parent',
82 'group' => 'draggableviews-parent',
83 'subgroup' => 'draggableviews-parent',
84 'source' => 'draggableviews-id'
86 drupal_attach_tabledrag($form, $options);