X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fredirect%2Fmodules%2Fredirect_404%2Fsrc%2FPlugin%2Fviews%2Ffield%2FRedirect404Operations.php;fp=web%2Fmodules%2Fcontrib%2Fredirect%2Fmodules%2Fredirect_404%2Fsrc%2FPlugin%2Fviews%2Ffield%2FRedirect404Operations.php;h=b1c0e6da574cc7fd77f3e7ad365404adc788d3f6;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/redirect/modules/redirect_404/src/Plugin/views/field/Redirect404Operations.php b/web/modules/contrib/redirect/modules/redirect_404/src/Plugin/views/field/Redirect404Operations.php new file mode 100644 index 000000000..b1c0e6da5 --- /dev/null +++ b/web/modules/contrib/redirect/modules/redirect_404/src/Plugin/views/field/Redirect404Operations.php @@ -0,0 +1,123 @@ +entityTypeManager = $entity_type_manager; + $this->renderer = $renderer; + $this->currentUser = $current_user; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity_type.manager'), + $container->get('renderer'), + $container->get('current_user') + ); + } + + /** + * {@inheritdoc} + */ + public function clickSortable() { + return FALSE; + } + + /** + * {@inheritdoc} + */ + public function render(ResultRow $values) { + $links = []; + + $query = [ + 'query' => [ + 'source' => ltrim($this->getValue($values, 'path'), '/'), + 'language' => $this->getValue($values, 'langcode'), + 'destination' => $this->view->getPath(), + ], + ]; + $links['add'] = [ + 'title' => $this->t('Add redirect'), + 'url' => Url::fromRoute('redirect.add', [], $query), + ]; + + if ($this->currentUser->hasPermission('administer redirect settings')) { + $links['ignore'] = [ + 'title' => $this->t('Ignore'), + 'url' => Url::fromRoute('redirect_404.ignore_404', [ + 'path' => $this->getValue($values, 'path'), + 'langcode' => $this->getValue($values, 'langcode'), + ]), + ]; + } + + $operations['data'] = [ + '#type' => 'operations', + '#links' => $links, + ]; + + return $this->renderer->render($operations); + } + + /** + * {@inheritdoc} + */ + public function access(AccountInterface $account) { + return $this->entityTypeManager->getAccessControlHandler('redirect')->createAccess(); + } + +}