You are here

public function TablesViews::content in Views Custom Table 8

Same name and namespace in other branches
  1. 9.0.x src/Controller/TablesViews.php \Drupal\view_custom_table\Controller\TablesViews::content()

Display views created by custom tables.

Parameters

null $table_name: Table name.

Return value

array Return markup array of views custom table created by logedin user. Return markup array of views custom table created by current user.

Throws

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException

\Drupal\Component\Plugin\Exception\PluginNotFoundException

1 string reference to 'TablesViews::content'
view_custom_table.routing.yml in ./view_custom_table.routing.yml
view_custom_table.routing.yml

File

src/Controller/TablesViews.php, line 54

Class

TablesViews
Defines TablesViews class.

Namespace

Drupal\view_custom_table\Controller

Code

public function content($table_name = NULL) {
  $properties = [
    'base_table' => $table_name,
  ];
  $views = $this->entityManager
    ->getStorage('view')
    ->loadByProperties($properties);
  if (!empty($views)) {
    foreach ($views as $machine_name => $view) {
      $parameter = [
        'view' => $machine_name,
      ];
      $options = [
        'query' => [
          'destination' => 'admin/structure/views/custom_table/views/' . $table_name,
        ],
      ];
      $edit_url = Url::fromRoute('entity.view.edit_form', $parameter, $options);
      $duplicate_url = Url::fromRoute('entity.view.duplicate_form', $parameter, $options);
      $enable_url = Url::fromRoute('entity.view.enable', $parameter, $options);
      $disable_url = Url::fromRoute('entity.view.disable', $parameter, $options);
      $delete_url = Url::fromRoute('entity.view.delete_form', $parameter, $options);
      if (!$view
        ->status()) {
        $links = [
          [
            '#type' => 'dropbutton',
            '#links' => [
              [
                'title' => $this
                  ->t('Enable'),
                'url' => $enable_url,
              ],
              [
                'title' => $this
                  ->t('Edit'),
                'url' => $edit_url,
              ],
              [
                'title' => $this
                  ->t('Duplicate'),
                'url' => $duplicate_url,
              ],
              [
                'title' => $this
                  ->t('Delete'),
                'url' => $delete_url,
              ],
            ],
          ],
        ];
      }
      else {
        $links = [
          [
            '#type' => 'dropbutton',
            '#links' => [
              [
                'title' => $this
                  ->t('Edit'),
                'url' => $edit_url,
              ],
              [
                'title' => $this
                  ->t('Duplicate'),
                'url' => $duplicate_url,
              ],
              [
                'title' => $this
                  ->t('Disable'),
                'url' => $disable_url,
              ],
              [
                'title' => $this
                  ->t('Delete'),
                'url' => $delete_url,
              ],
            ],
          ],
        ];
      }
      $rows[] = [
        'name' => $view
          ->label(),
        'machine_name' => $machine_name,
        'description' => $view
          ->get('description'),
        'operations' => render($links),
      ];
    }
    $headers = [
      $this
        ->t('View Name'),
      $this
        ->t('Machine Name'),
      $this
        ->t('Description'),
      $this
        ->t('Operations'),
    ];
    return [
      '#theme' => 'table',
      '#header' => $headers,
      '#rows' => isset($rows) ? $rows : [],
    ];
  }
  else {
    return [
      '#type' => 'markup',
      '#markup' => $this
        ->t('No entry found for views custom tables'),
    ];
  }
  return [
    '#type' => 'markup',
    '#markup' => $this
      ->t('Module not installed properly, please reinstall module again.'),
  ];
}