diff --git a/core/lib/Drupal/Core/Entity/EntityFormController.php b/core/lib/Drupal/Core/Entity/EntityFormController.php
index 2ea0fbe..98001fc 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormController.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormController.php
@@ -246,6 +246,14 @@ protected function actions(array $form, array &$form_state) {
       ),
       'delete' => array(
         '#value' => $this->t('Delete'),
+        '#ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
+        '#attached' => array(
+          'library' => array(
+            array('system', 'drupal.dialog.ajax'),
+          ),
+        ),
         // No need to validate the form when deleting the entity.
         '#submit' => array(
           array($this, 'delete'),
diff --git a/core/lib/Drupal/Core/Entity/EntityListController.php b/core/lib/Drupal/Core/Entity/EntityListController.php
index ef3ec43..0207bb2 100644
--- a/core/lib/Drupal/Core/Entity/EntityListController.php
+++ b/core/lib/Drupal/Core/Entity/EntityListController.php
@@ -108,6 +108,9 @@ public function getOperations(EntityInterface $entity) {
       $operations['delete'] = array(
         'title' => $this->t('Delete'),
         'href' => $uri['path'] . '/delete',
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
         'options' => $uri['options'],
         'weight' => 100,
       );
diff --git a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
index f2b4f25..a22e131 100644
--- a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
+++ b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php
@@ -61,6 +61,9 @@ public static function buildCancelLink(ConfirmFormInterface $form, Request $requ
 
     $link['#type'] = 'link';
     $link['#title'] = $form->getCancelText();
+    $link['#attributes'] = array(
+      'class' => array('dialog-cancel'),
+    );
     return $link;
   }
 
diff --git a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
index 4fcd9ea..7568886 100644
--- a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
+++ b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
@@ -19,7 +19,7 @@ class AjaxEnhancer implements RouteEnhancerInterface {
   /**
    * Content negotiation library.
    *
-   * @var \Drupal\CoreContentNegotiation
+   * @var \Drupal\Core\ContentNegotiation
    */
   protected $negotiation;
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
index f9b25b9..de07cec 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
@@ -155,11 +155,17 @@ public function adminOverview() {
         'title' => $this->t('Delete'),
         'route_name' => 'aggregator.feed_delete',
         'route_parameters' => array('aggregator_feed' => $feed->fid),
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
       );
       $links['remove'] = array(
         'title' => $this->t('Remove items'),
         'route_name' => 'aggregator.feed_items_delete',
         'route_parameters' => array('aggregator_feed' => $feed->fid),
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
       );
       $links['update'] = array(
         'title' => $this->t('Update items'),
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
index 12fda9c..a6f8a36 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
@@ -68,6 +68,9 @@ function testList() {
       'delete' => array (
         'title' => t('Delete'),
         'href' => $uri['path'] . '/delete',
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
         'options' => $uri['options'],
         'weight' => 100,
       ),
@@ -141,6 +144,9 @@ function testList() {
       'delete' => array(
         'title' => t('Delete'),
         'href' => $uri['path'] . '/delete',
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
         'options' => $uri['options'],
         'weight' => 100,
       ),
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestFormController.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestFormController.php
index 514311b..881a3e9 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestFormController.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestFormController.php
@@ -60,6 +60,9 @@ public function form(array $form, array &$form_state) {
     $form['actions']['delete'] = array(
       '#type' => 'submit',
       '#value' => 'Delete',
+      '#ajax' => array(
+        'accepts' => 'application/vnd.drupal-modal',
+      ),
     );
 
     return $form;
diff --git a/core/modules/config_translation/lib/Drupal/config_translation/Controller/ConfigTranslationController.php b/core/modules/config_translation/lib/Drupal/config_translation/Controller/ConfigTranslationController.php
index 03c2a20..c892900 100644
--- a/core/modules/config_translation/lib/Drupal/config_translation/Controller/ConfigTranslationController.php
+++ b/core/modules/config_translation/lib/Drupal/config_translation/Controller/ConfigTranslationController.php
@@ -213,7 +213,13 @@ public function itemPage(Request $request, $plugin_id) {
             'title' => $this->t('Delete'),
             'route_name' => $mapper->getDeleteRouteName(),
             'route_parameters' => $mapper->getDeleteRouteParameters(),
+            'attributes' => array(
+              'class' => array('use-ajax'),
+              'data-accepts' => 'application/vnd.drupal-modal',
+            ),
           );
+          // Add the AJAX library to the form for dialog support.
+          $page['#attached']['library'][] = array('system', 'drupal.ajax');
         }
       }
 
diff --git a/core/modules/content_translation/content_translation.pages.inc b/core/modules/content_translation/content_translation.pages.inc
index aa1b1f3..7069fd6 100644
--- a/core/modules/content_translation/content_translation.pages.inc
+++ b/core/modules/content_translation/content_translation.pages.inc
@@ -109,6 +109,9 @@ function content_translation_overview(EntityInterface $entity) {
           if ($controller->getTranslationAccess($entity, 'delete')) {
             $links['delete'] = isset($delete_links->links[$langcode]['href']) ? $delete_links->links[$langcode] : array('href' => $delete_links, 'language' => $language);
             $links['delete']['title'] = t('Delete');
+            $links['delete']['ajax'] = array(
+              'accepts' => 'application/vnd.drupal-modal',
+            );
           }
         }
       }
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
index e99c9b0..3d9a0fe 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
@@ -165,6 +165,14 @@ public function entityFormAlter(array &$form, array &$form_state, EntityInterfac
         $form['actions']['delete_translation'] = array(
           '#type' => 'submit',
           '#value' => t('Delete translation'),
+          '#ajax' => array(
+            'accepts' => 'application/vnd.drupal-modal',
+          ),
+          '#attached' => array(
+            'library' => array(
+              array('system', 'drupal.dialog.ajax'),
+            ),
+          ),
           '#weight' => $weight,
           '#submit' => array(array($this, 'entityFormDeleteTranslation')),
           '#access' => $this->getTranslationAccess($entity, 'delete'),
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
index 2e0106f..eef19d0 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
@@ -162,6 +162,9 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL,
         'title' => $this->t('Delete'),
         'route_name' => 'field_ui.delete_' . $this->entity_type,
         'route_parameters' => $route_parameters,
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
         'attributes' => array('title' => $this->t('Delete instance.')),
       );
       // Allow altering the operations on this entity listing.
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php
index 751f1f5..83cfd7f 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php
@@ -155,6 +155,14 @@ public function buildForm(array $form, array &$form_state, FieldInstanceInterfac
     $form['actions']['delete'] = array(
       '#type' => 'submit',
       '#value' => $this->t('Delete field'),
+      '#ajax' => array(
+        'accepts' => 'application/vnd.drupal-modal',
+      ),
+      '#attached' => array(
+        'library' => array(
+          array('system', 'drupal.dialog.ajax'),
+        ),
+      ),
       '#submit' => array(array($this, 'delete')),
     );
     return $form;
diff --git a/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php b/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
index c00b009..cdf57ba 100644
--- a/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
+++ b/core/modules/image/lib/Drupal/image/Form/ImageStyleEditForm.php
@@ -97,6 +97,9 @@ public function form(array $form, array &$form_state) {
       $links['delete'] = array(
         'title' => $this->t('delete'),
         'href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete',
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
       );
       $form['effects'][$key]['operations'] = array(
         '#type' => 'operations',
@@ -112,6 +115,9 @@ public function form(array $form, array &$form_state) {
         '#type' => 'link',
         '#title' => $this->t('delete'),
         '#href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete',
+        '#ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
       );
     }
 
diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
index 5e369d5..f8b6ef4 100644
--- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php
+++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
@@ -347,6 +347,9 @@ protected function buildOverviewTreeForm($tree, $delta) {
           $operations['delete'] = array(
             'title' => t('Delete'),
             'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete',
+            'ajax' => array(
+              'accepts' => 'application/vnd.drupal-modal',
+            ),
           );
         }
         // Set the reset column.
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index b457cb9..5125eab 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -88,7 +88,9 @@ function node_help($path, $arg) {
       $message = t('The content access permissions need to be rebuilt.');
     }
     else {
-      $message = t('The content access permissions need to be rebuilt. <a href="@node_access_rebuild">Rebuild permissions</a>.', array('@node_access_rebuild' => url('admin/reports/status/rebuild')));
+      // Add the AJAX library to the form for dialog support.
+      drupal_add_library('system', 'drupal.ajax');
+      $message = t('The content access permissions need to be rebuilt. <a class="use-ajax" href="@node_access_rebuild" data-accepts="application/vnd.drupal-modal">Rebuild permissions</a>.', array('@node_access_rebuild' => url('admin/reports/status/rebuild')));
     }
     drupal_set_message($message, 'error');
   }
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index ad96476..0792907 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -164,12 +164,18 @@ function node_revision_overview($node) {
         $links['revert'] = array(
           'title' => t('Revert'),
           'href' => "node/" . $node->id() . "/revisions/" . $revision->vid . "/revert",
+          'ajax' => array(
+            'accepts' => 'application/vnd.drupal-modal',
+          ),
         );
       }
       if ($delete_permission) {
         $links['delete'] = array(
           'title' => t('Delete'),
           'href' => "node/" . $node->id() . "/revisions/" . $revision->vid . "/delete",
+          'ajax' => array(
+            'accepts' => 'application/vnd.drupal-modal',
+          ),
         );
       }
       $row[] = array(
diff --git a/core/modules/path/path.admin.inc b/core/modules/path/path.admin.inc
index 6574208..01b0a25 100644
--- a/core/modules/path/path.admin.inc
+++ b/core/modules/path/path.admin.inc
@@ -69,6 +69,9 @@ function path_admin_overview($keys = NULL) {
     $operations['delete'] = array(
       'title' => t('delete'),
       'href' => "admin/config/search/path/delete/$data->pid",
+      'ajax' => array(
+        'accepts' => 'application/vnd.drupal-modal',
+      ),
       'query' => $destination,
     );
     $row['data']['operations'] = array(
diff --git a/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php b/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
index 1e574c3..9f10da9 100644
--- a/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
+++ b/core/modules/search/lib/Drupal/search/Form/SearchPageFormBase.php
@@ -167,7 +167,7 @@ public function submit(array $form, array &$form_state) {
     parent::submit($form, $form_state);
 
     if ($this->plugin instanceof PluginFormInterface) {
-      $this->plugin->submitConfigurationForm($form, $form_state);
+      $this->entity->getPlugin()->submitConfigurationForm($form, $form_state);
     }
     return $this->entity;
   }
diff --git a/core/modules/search/lib/Drupal/search/SearchPageListController.php b/core/modules/search/lib/Drupal/search/SearchPageListController.php
index e7a7d8b..8dc5180 100644
--- a/core/modules/search/lib/Drupal/search/SearchPageListController.php
+++ b/core/modules/search/lib/Drupal/search/SearchPageListController.php
@@ -162,6 +162,14 @@ public function buildForm(array $form, array &$form_state) {
     $form['status']['wipe'] = array(
       '#type' => 'submit',
       '#value' => $this->t('Re-index site'),
+      '#ajax' => array(
+        'accepts' => 'application/vnd.drupal-modal',
+      ),
+      '#attached' => array(
+        'library' => array(
+          array('system', 'drupal.dialog.ajax'),
+        ),
+      ),
       '#submit' => array(array($this, 'searchAdminReindexSubmit')),
     );
 
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php b/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
index 12a789c..20ff0b6 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
@@ -87,6 +87,9 @@ public function form(array $form, array &$form_state) {
       $links['delete'] = array(
         'title' => t('Delete'),
         'href' => "admin/config/user-interface/shortcut/link/$id/delete",
+        'ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
       );
       $form['shortcuts']['links'][$id]['operations'] = array(
         '#type' => 'operations',
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
index b680223..3835e3b 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
@@ -262,6 +262,9 @@ public function buildForm(array $form, array &$form_state, VocabularyInterface $
         'delete' => array(
           'title' => $this->t('delete'),
           'href' => $uri['path'] . '/delete',
+          'ajax' => array(
+            'accepts' => 'application/vnd.drupal-modal',
+          ),
           'query' => $destination,
         ),
       );
@@ -341,6 +344,14 @@ public function buildForm(array $form, array &$form_state, VocabularyInterface $
       );
       $form['actions']['reset_alphabetical'] = array(
         '#type' => 'submit',
+        '#ajax' => array(
+          'accepts' => 'application/vnd.drupal-modal',
+        ),
+        '#attached' => array(
+          'library' => array(
+            array('system', 'drupal.dialog.ajax'),
+          ),
+        ),
         '#submit' => array(array($this, 'submitReset')),
         '#value' => $this->t('Reset to alphabetical'),
       );
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
index 05c11cc..37ea346 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
@@ -127,7 +127,7 @@ public function form(array $form, array &$form_state) {
       $form['locked'] = array(
         '#type' => 'container',
         '#attributes' => array('class' => array('view-locked', 'messages', 'messages--warning')),
-        '#children' => $this->t('This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href="!break">break this lock</a>.', $lock_message_substitutions),
+        '#children' => $this->t('This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a class="use-ajax" href="!break" data-accepts="application/vnd.drupal-modal">break this lock</a>.', $lock_message_substitutions),
         '#weight' => -10,
       );
     }
