Chris@0: aliasStorage = $alias_storage; Chris@0: $this->aliasManager = $alias_manager; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function create(ContainerInterface $container) { Chris@0: return new static( Chris@0: $container->get('path.alias_storage'), Chris@0: $container->get('path.alias_manager') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Displays the path administration overview page. Chris@0: * Chris@0: * @param \Symfony\Component\HttpFoundation\Request $request Chris@0: * The request object. Chris@0: * Chris@0: * @return array Chris@16: * A render array as expected by Chris@16: * \Drupal\Core\Render\RendererInterface::render(). Chris@0: */ Chris@0: public function adminOverview(Request $request) { Chris@0: $keys = $request->query->get('search'); Chris@0: // Add the filter form above the overview table. Chris@0: $build['path_admin_filter_form'] = $this->formBuilder()->getForm('Drupal\path\Form\PathFilterForm', $keys); Chris@0: // Enable language column if language.module is enabled or if we have any Chris@0: // alias with a language. Chris@0: $multilanguage = ($this->moduleHandler()->moduleExists('language') || $this->aliasStorage->languageAliasExists()); Chris@0: Chris@0: $header = []; Chris@0: $header[] = ['data' => $this->t('Alias'), 'field' => 'alias', 'sort' => 'asc']; Chris@0: $header[] = ['data' => $this->t('System'), 'field' => 'source']; Chris@0: if ($multilanguage) { Chris@0: $header[] = ['data' => $this->t('Language'), 'field' => 'langcode']; Chris@0: } Chris@0: $header[] = $this->t('Operations'); Chris@0: Chris@0: $rows = []; Chris@0: $destination = $this->getDestinationArray(); Chris@0: foreach ($this->aliasStorage->getAliasesForAdminListing($header, $keys) as $data) { Chris@0: $row = []; Chris@0: // @todo Should Path module store leading slashes? See Chris@0: // https://www.drupal.org/node/2430593. Chris@0: $row['data']['alias'] = $this->l(Unicode::truncate($data->alias, 50, FALSE, TRUE), Url::fromUserInput($data->source, [ Chris@0: 'attributes' => ['title' => $data->alias], Chris@0: ])); Chris@0: $row['data']['source'] = $this->l(Unicode::truncate($data->source, 50, FALSE, TRUE), Url::fromUserInput($data->source, [ Chris@0: 'alias' => TRUE, Chris@0: 'attributes' => ['title' => $data->source], Chris@0: ])); Chris@0: if ($multilanguage) { Chris@0: $row['data']['language_name'] = $this->languageManager()->getLanguageName($data->langcode); Chris@0: } Chris@0: Chris@0: $operations = []; Chris@0: $operations['edit'] = [ Chris@0: 'title' => $this->t('Edit'), Chris@0: 'url' => Url::fromRoute('path.admin_edit', ['pid' => $data->pid], ['query' => $destination]), Chris@0: ]; Chris@0: $operations['delete'] = [ Chris@0: 'title' => $this->t('Delete'), Chris@0: 'url' => Url::fromRoute('path.delete', ['pid' => $data->pid], ['query' => $destination]), Chris@0: ]; Chris@0: $row['data']['operations'] = [ Chris@0: 'data' => [ Chris@0: '#type' => 'operations', Chris@0: '#links' => $operations, Chris@0: ], Chris@0: ]; Chris@0: Chris@0: // If the system path maps to a different URL alias, highlight this table Chris@0: // row to let the user know of old aliases. Chris@0: if ($data->alias != $this->aliasManager->getAliasByPath($data->source, $data->langcode)) { Chris@0: $row['class'] = ['warning']; Chris@0: } Chris@0: Chris@0: $rows[] = $row; Chris@0: } Chris@0: Chris@0: $build['path_table'] = [ Chris@0: '#type' => 'table', Chris@0: '#header' => $header, Chris@0: '#rows' => $rows, Chris@0: '#empty' => $this->t('No URL aliases available. Add URL alias.', [':link' => $this->url('path.admin_add')]), Chris@0: ]; Chris@0: $build['path_pager'] = ['#type' => 'pager']; Chris@0: Chris@0: return $build; Chris@0: } Chris@0: Chris@0: }