From 5128dcbbac7fdc6859d73639292ec455928196db Mon Sep 17 00:00:00 2001
From: Daniel Wehner <daniel.wehner@erdfisch.de>
Date: Fri, 27 Jul 2012 16:34:36 -0500
Subject: [PATCH] use annotations to instanciate sorthandlers

---
 includes/handlers.inc                         | 60 +++++--------------
 lib/Drupal/views/Plugins/views/query/Sql.php  | 14 ++---
 lib/Drupal/views/Plugins/views/sort/Date.php  |  7 ++-
 .../Plugins/views/sort/GroupByNumeric.php     |  6 +-
 .../Plugins/views/sort/MenuHierarchy.php      |  6 +-
 .../views/Plugins/views/sort/Random.php       |  6 +-
 .../Plugins/views/sort/SortPluginBase.php     | 14 +++++
 modules/book.views.inc                        |  2 +-
 modules/comment.views.inc                     |  2 +-
 .../views_handler_sort_comment_thread.inc     |  8 +++
 ...ews_handler_sort_ncs_last_comment_name.inc |  8 ++-
 modules/node.views.inc                        | 22 +++----
 modules/search.views.inc                      |  2 +-
 .../views_handler_sort_search_score.inc       |  7 +++
 modules/statistics.views.inc                  | 22 +++----
 modules/system.views.inc                      | 32 +++++-----
 modules/taxonomy.views.inc                    | 12 ++--
 modules/translation.views.inc                 |  2 +-
 modules/user.views.inc                        | 18 +++---
 modules/views.views.inc                       |  2 +-
 views.api.php                                 |  2 +-
 views.module                                  |  4 ++
 22 files changed, 141 insertions(+), 117 deletions(-)

diff --git a/includes/handlers.inc b/includes/handlers.inc
index c7b96ff4faae..3bc656f17aaa 100644
--- a/includes/handlers.inc
+++ b/includes/handlers.inc
@@ -10,6 +10,8 @@
 use Drupal\views\Join;
 use Drupal\views\ViewsObject;
 
+
+
 /**
  * Instantiate and construct a new plugin.
  *
@@ -20,11 +22,16 @@ function _views_create_plugin($type, $plugin_id, $definition) {
   $manager = views_get_plugin_manager($type);
   $instance = $manager->createInstance($plugin_id);
 
+  $instance->is_plugin = TRUE;
+  $instance->plugin_type = $type;
+  $instance->plugin_name = $definition['name'];
+
   $instance->set_definition($definition);
 
   // Let the handler have something like a constructor.
   $instance->construct();
 
+
   return $instance;
 }
 
@@ -32,58 +39,19 @@ function _views_create_plugin($type, $plugin_id, $definition) {
  * Instantiate and construct a new handler
  */
 function _views_create_handler($definition, $type = 'handler', $handler_type = NULL) {
-//  debug('Instantiating handler ' . $definition['handler']);
-  if (empty($definition['handler'])) {
-    vpr('_views_create_handler - type: @type - failed: handler has not been provided.',
-      array('@type' => isset($handler_type) ? ( $type . '(handler type: ' . $handler_type . ')' ) : $type)
-    );
-    return;
-  }
-
-  // class_exists will automatically load the code file.
-  if (!empty($definition['override handler']) &&
-      !class_exists($definition['override handler'])) {
-    vpr(
-      '_views_create_handler - loading override handler @type failed: class @override_handler could not be loaded. ' .
-      'Verify the class file has been registered in the corresponding .info-file (files[]).',
-      array(
-        '@type' => isset($handler_type) ? ( $type . '(handler type: ' . $handler_type . ')' ) : $type,
-        '@override_handler' => $definition['override handler']
-      )
-    );
-    return;
-  }
-
-  if (!class_exists($definition['handler'])) {
-    vpr(
-      '_views_create_handler - loading handler @type failed: class @handler could not be loaded. ' .
-      'Verify the class file has been registered in the corresponding .info-file (files[]).',
-      array(
-        '@type' => isset($handler_type) ? ( $type . '(handler type: ' . $handler_type . ')' ) : $type,
-        '@handler' => $definition['handler']
-      )
-    );
-    return;
-  }
-
-  if (!empty($definition['override handler'])) {
-    $handler = new $definition['override handler'];
+  if ($definition['plugin_id']) {
+    $manager = views_get_plugin_manager($handler_type);
+    $handler = $manager->createInstance($definition['plugin_id']);
   }
   else {
-    // @todo: $definition['handler'] is kind of a bad.
+    // @todo: remove this else, once all instances got converted.
     $handler = new $definition['handler']($definition, $definition['handler']);
   }
 
   $handler->set_definition($definition);
-  if ($type == 'handler') {
-    $handler->is_handler = TRUE;
-    $handler->handler_type = $handler_type;
-  }
-  else {
-    $handler->is_plugin = TRUE;
-    $handler->plugin_type = $type;
-    $handler->plugin_name = $definition['name'];
-  }
+
+  $handler->is_handler = TRUE;
+  $handler->handler_type = $handler_type;
 
   // let the handler have something like a constructor.
   $handler->construct();
diff --git a/lib/Drupal/views/Plugins/views/query/Sql.php b/lib/Drupal/views/Plugins/views/query/Sql.php
index 2afff32f2344..4595183bf951 100644
--- a/lib/Drupal/views/Plugins/views/query/Sql.php
+++ b/lib/Drupal/views/Plugins/views/query/Sql.php
@@ -1533,7 +1533,7 @@ function get_aggregation_info() {
           'argument' => 'views_handler_argument_group_by_numeric',
           'field' => 'views_handler_field_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'count_distinct' => array(
@@ -1543,7 +1543,7 @@ function get_aggregation_info() {
           'argument' => 'views_handler_argument_group_by_numeric',
           'field' => 'views_handler_field_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'sum' => array(
@@ -1552,7 +1552,7 @@ function get_aggregation_info() {
         'handler' => array(
           'argument' => 'views_handler_argument_group_by_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'avg' => array(
@@ -1561,7 +1561,7 @@ function get_aggregation_info() {
         'handler' => array(
           'argument' => 'views_handler_argument_group_by_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'min' => array(
@@ -1570,7 +1570,7 @@ function get_aggregation_info() {
         'handler' => array(
           'argument' => 'views_handler_argument_group_by_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'max' => array(
@@ -1579,7 +1579,7 @@ function get_aggregation_info() {
         'handler' => array(
           'argument' => 'views_handler_argument_group_by_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       ),
       'stddev_pop' => array(
@@ -1588,7 +1588,7 @@ function get_aggregation_info() {
         'handler' => array(
           'argument' => 'views_handler_argument_group_by_numeric',
           'filter' => 'views_handler_filter_group_by_numeric',
-          'sort' => 'views_handler_sort_group_by_numeric',
+          'sort' => 'groupby_numeric',
         ),
       )
     );
diff --git a/lib/Drupal/views/Plugins/views/sort/Date.php b/lib/Drupal/views/Plugins/views/sort/Date.php
index 4d80c7b47780..29bc4e5b8754 100644
--- a/lib/Drupal/views/Plugins/views/sort/Date.php
+++ b/lib/Drupal/views/Plugins/views/sort/Date.php
@@ -7,13 +7,18 @@
 
 namespace Drupal\views\Plugins\views\sort;
 
+use Drupal\Core\Annotation\Plugin;
+
 /**
  * Basic sort handler for dates.
  *
  * This handler enables granularity, which is the ability to make dates
  * equivalent based upon nearness.
  *
- * @ingroup views_sort_handlers
+ *  @Plugin(
+ *   plugin_id = "date"
+ * )
+ *
  */
 class Date extends SortPluginBase {
   function option_definition() {
diff --git a/lib/Drupal/views/Plugins/views/sort/GroupByNumeric.php b/lib/Drupal/views/Plugins/views/sort/GroupByNumeric.php
index 041512c872e8..23ade3d97726 100644
--- a/lib/Drupal/views/Plugins/views/sort/GroupByNumeric.php
+++ b/lib/Drupal/views/Plugins/views/sort/GroupByNumeric.php
@@ -7,10 +7,14 @@
 
 namespace Drupal\views\Plugins\views\sort;
 
+use Drupal\Core\Annotation\Plugin;
+
 /**
  * Handler for GROUP BY on simple numeric fields.
  *
- * @ingroup views_sort_handlers
+ *  @Plugin(
+ *   plugin_id = "groupby_numeric"
+ * )
  */
 class GroupByNumeric extends SortPluginBase {
   function init(&$view, &$options) {
diff --git a/lib/Drupal/views/Plugins/views/sort/MenuHierarchy.php b/lib/Drupal/views/Plugins/views/sort/MenuHierarchy.php
index 18831a46d0c5..f524e22487ce 100644
--- a/lib/Drupal/views/Plugins/views/sort/MenuHierarchy.php
+++ b/lib/Drupal/views/Plugins/views/sort/MenuHierarchy.php
@@ -8,6 +8,8 @@
 namespace Drupal\views\Plugins\views\sort;
 
 use Drupal\views\Join;
+use Drupal\Core\Annotation\Plugin;
+
 
 /**
  * Sort in menu hierarchy order.
@@ -18,7 +20,9 @@
  *
  * This is only really useful for the {menu_links} table.
  *
- * @ingroup views_sort_handlers
+ *  @Plugin(
+ *   plugin_id = "menu_hierarchy"
+ * )
  */
 class MenuHierarchy extends SortPluginBase {
   function option_definition() {
diff --git a/lib/Drupal/views/Plugins/views/sort/Random.php b/lib/Drupal/views/Plugins/views/sort/Random.php
index 8bf4ce3f9d73..ef1635b10135 100644
--- a/lib/Drupal/views/Plugins/views/sort/Random.php
+++ b/lib/Drupal/views/Plugins/views/sort/Random.php
@@ -7,10 +7,14 @@
 
 namespace Drupal\views\Plugins\views\sort;
 
+use Drupal\Core\Annotation\Plugin;
+
 /**
  * Handle a random sort.
  *
- * @ingroup views_sort_handlers
+ *  @Plugin(
+ *   plugin_id = "random"
+ * )
  */
 class Random extends SortPluginBase {
   function query() {
diff --git a/lib/Drupal/views/Plugins/views/sort/SortPluginBase.php b/lib/Drupal/views/Plugins/views/sort/SortPluginBase.php
index a2b6e6baf019..347084da0b93 100644
--- a/lib/Drupal/views/Plugins/views/sort/SortPluginBase.php
+++ b/lib/Drupal/views/Plugins/views/sort/SortPluginBase.php
@@ -8,6 +8,7 @@
 namespace Drupal\views\Plugins\views\sort;
 
 use Drupal\views\Plugins\views\Handler;
+use Drupal\Core\Annotation\Plugin;
 
 /**
  * @defgroup views_sort_handlers Views sort handlers
@@ -15,11 +16,18 @@
  * Handlers to tell Views how to sort queries.
  */
 
+
 /**
  * Base sort handler that has no options and performs a simple sort.
  *
  * @ingroup views_sort_handlers
  */
+
+/**
+ * @Plugin(
+ *   plugin_id = "standard"
+ * )
+ */
 class SortPluginBase extends Handler {
 
   /**
@@ -219,6 +227,12 @@ function expose_options() {
  *
  * @ingroup views_sort_handlers
  */
+
+/**
+ * @Plugin(
+ *   plugin_id = "broken"
+ * )
+ */
 class views_handler_sort_broken extends SortPluginBase {
   function ui_name($short = FALSE) {
     return t('Broken/missing handler');
diff --git a/modules/book.views.inc b/modules/book.views.inc
index 15a21830a05d..db1660133e91 100644
--- a/modules/book.views.inc
+++ b/modules/book.views.inc
@@ -82,7 +82,7 @@ function book_views_data() {
     'title' => t('Hierarchy'),
     'help' => t('The order of pages in the book hierarchy.'),
     'sort' => array(
-      'handler' => 'views_handler_sort_menu_hierarchy',
+      'plugin_id' => 'menu_hierarchy',
     ),
   );
 
diff --git a/modules/comment.views.inc b/modules/comment.views.inc
index 91e0f8d96542..06680cf7d961 100644
--- a/modules/comment.views.inc
+++ b/modules/comment.views.inc
@@ -343,7 +343,7 @@ function comment_views_data() {
     'sort' => array(
       'title' => t('Thread'),
       'help' => t('Sort by the threaded order. This will keep child comments together with their parents.'),
-      'handler' => 'views_handler_sort_comment_thread',
+      'plugin_id' => 'comment_thread',
     ),
   );
 
diff --git a/modules/comment/views_handler_sort_comment_thread.inc b/modules/comment/views_handler_sort_comment_thread.inc
index 46fedc7947a3..ea8661b5b3dd 100644
--- a/modules/comment/views_handler_sort_comment_thread.inc
+++ b/modules/comment/views_handler_sort_comment_thread.inc
@@ -6,12 +6,20 @@
  */
 
 use Drupal\views\Plugins\views\sort\SortPluginBase;
+use Drupal\Core\Annotation\Plugin;
+
 
 /**
  * Sort handler for ordering by thread.
  *
  * @ingroup views_sort_handlers
  */
+
+/**
+ * @Plugin(
+ *   plugin_id = 'comment_thread'
+ * )
+ */
 class views_handler_sort_comment_thread extends SortPluginBase {
   function query() {
     $this->ensure_my_table();
diff --git a/modules/comment/views_handler_sort_ncs_last_comment_name.inc b/modules/comment/views_handler_sort_ncs_last_comment_name.inc
index 38144d75fb6e..2ea91aa43f8a 100644
--- a/modules/comment/views_handler_sort_ncs_last_comment_name.inc
+++ b/modules/comment/views_handler_sort_ncs_last_comment_name.inc
@@ -7,7 +7,7 @@
 
 use Drupal\views\Join;
 use Drupal\views\Plugins\views\sort\SortPluginBase;
-
+use Drupal\Core\Annotation\Plugin;
 
 /**
  * Sort handler to sort by last comment name which might be in 2 different
@@ -15,6 +15,12 @@
  *
  * @ingroup views_sort_handlers
  */
+
+/**
+ * @Plugin(
+ *   plugin_id = "ncs_last_comment_name"
+ * )
+ */
 class views_handler_sort_ncs_last_comment_name extends SortPluginBase {
   function query() {
     $this->ensure_my_table();
diff --git a/modules/node.views.inc b/modules/node.views.inc
index b04a90a3e20e..9028201e59c8 100644
--- a/modules/node.views.inc
+++ b/modules/node.views.inc
@@ -64,7 +64,7 @@ function node_views_data() {
     ),
     // Information for sorting on a nid.
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -82,7 +82,7 @@ function node_views_data() {
       'link_to_node default' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     // Information for accepting a title as a filter
     'filter' => array(
@@ -102,7 +102,7 @@ function node_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -118,7 +118,7 @@ function node_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -134,7 +134,7 @@ function node_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_node_type',
@@ -162,7 +162,7 @@ function node_views_data() {
       'use equal' => TRUE, // Use status = 1 instead of status <> 0 in WHERE statment
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -194,7 +194,7 @@ function node_views_data() {
       'type' => 'yes-no',
     ),
     'sort' => array(
-      'handler' => 'views_handler_sort',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -216,7 +216,7 @@ function node_views_data() {
       'type' => 'yes-no',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
       'help' => t('Whether or not the content is sticky. To list sticky content first, set this to descending.'),
     ),
   );
@@ -477,7 +477,7 @@ function node_views_data() {
     ),
     // Information for sorting on a nid.
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'relationship' => array(
       'handler' => 'Drupal\views\Plugins\views\relationship\RelationshipPluginBase',
@@ -499,7 +499,7 @@ function node_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -532,7 +532,7 @@ function node_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
diff --git a/modules/search.views.inc b/modules/search.views.inc
index 7a08e049572f..ffde9af21b6b 100644
--- a/modules/search.views.inc
+++ b/modules/search.views.inc
@@ -70,7 +70,7 @@ function search_views_data() {
     ),
     // Information for sorting on a search score.
     'sort' => array(
-      'handler' => 'views_handler_sort_search_score',
+      'plugin_id' => 'search_score',
       'no group by' => TRUE,
     ),
   );
diff --git a/modules/search/views_handler_sort_search_score.inc b/modules/search/views_handler_sort_search_score.inc
index 92ff2b0ed8e7..0282f69ec4b0 100644
--- a/modules/search/views_handler_sort_search_score.inc
+++ b/modules/search/views_handler_sort_search_score.inc
@@ -6,12 +6,19 @@
  */
 
 use Drupal\views\Plugins\views\sort\SortPluginBase;
+use Drupal\Core\Annotation\Plugin;
 
 /**
  * Field handler to provide simple renderer that allows linking to a node.
  *
  * @ingroup views_sort_handlers
  */
+
+/**
+ * @Plugin(
+ *   plugin_id = "search_score"
+ * )
+ */
 class views_handler_sort_search_score extends SortPluginBase {
   function query() {
     // Check to see if the search filter/argument added 'score' to the table.
diff --git a/modules/statistics.views.inc b/modules/statistics.views.inc
index fd435584e540..1d5692b2c145 100644
--- a/modules/statistics.views.inc
+++ b/modules/statistics.views.inc
@@ -39,7 +39,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -56,7 +56,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -73,7 +73,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -116,7 +116,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -136,7 +136,7 @@ function statistics_views_data() {
        'handler' => 'Drupal\views\Plugins\views\argument\String',
      ),
      'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
      ),
   );
 
@@ -153,7 +153,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\String',
      ),
      'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
      ),
      'argument' => array(
       'handler' => 'Drupal\views\Plugins\views\sort\String',
@@ -173,7 +173,7 @@ function statistics_views_data() {
        'handler' => 'Drupal\views\Plugins\views\filter\String',
      ),
      'sort' => array(
-       'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+       'plugin_id' => 'standard',
      ),
      //No argument here.  Can't send forward slashes as arguments.
      //Can be worked around by node ID.
@@ -192,7 +192,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -208,7 +208,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'argument' => array(
       'handler' => 'Drupal\views\Plugins\views\argument\String',
@@ -238,7 +238,7 @@ function statistics_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\Sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -251,7 +251,7 @@ function statistics_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
diff --git a/modules/system.views.inc b/modules/system.views.inc
index cdd230a6583d..5ac1f8b93fc1 100644
--- a/modules/system.views.inc
+++ b/modules/system.views.inc
@@ -47,7 +47,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -60,7 +60,7 @@ function system_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -79,7 +79,7 @@ function system_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -98,7 +98,7 @@ function system_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -128,7 +128,7 @@ function system_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
@@ -144,7 +144,7 @@ function system_views_data() {
       'click sortable' => TRUE,
      ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_file_status',
@@ -160,7 +160,7 @@ function system_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -401,7 +401,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\argument\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   $data['file_usage']['type'] = array(
@@ -418,7 +418,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\argument\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   $data['file_usage']['id'] = array(
@@ -435,7 +435,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   $data['file_usage']['count'] = array(
@@ -449,7 +449,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
@@ -481,7 +481,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   // - name
@@ -500,7 +500,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\String',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   // - type
@@ -519,7 +519,7 @@ function system_views_data() {
       'handler' => 'views_handler_filter_system_type',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   // - status
@@ -538,7 +538,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\BooleanOperator',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   // - schema version
@@ -557,7 +557,7 @@ function system_views_data() {
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
diff --git a/modules/taxonomy.views.inc b/modules/taxonomy.views.inc
index d7b4ebe9095f..c72a306b21ab 100644
--- a/modules/taxonomy.views.inc
+++ b/modules/taxonomy.views.inc
@@ -44,7 +44,7 @@ function taxonomy_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
       'help' => t('The taxonomy vocabulary name'),
     ),
   );
@@ -76,7 +76,7 @@ function taxonomy_views_data() {
       'name field' => 'name',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
   $data['taxonomy_vocabulary']['description'] = array(
@@ -98,7 +98,7 @@ function taxonomy_views_data() {
       'name field' => 'weight',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
@@ -150,7 +150,7 @@ function taxonomy_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'argument' => array(
       'handler' => 'views_handler_argument_taxonomy',
@@ -201,7 +201,7 @@ function taxonomy_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -224,7 +224,7 @@ function taxonomy_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Numeric',
diff --git a/modules/translation.views.inc b/modules/translation.views.inc
index 7867392d226e..030560f291d8 100644
--- a/modules/translation.views.inc
+++ b/modules/translation.views.inc
@@ -39,7 +39,7 @@ function translation_views_data_alter(&$data) {
       'validate type' => 'tnid',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'relationship' => array(
       'title' => t('Source translation'),
diff --git a/modules/user.views.inc b/modules/user.views.inc
index 73b5245b546c..b6ae4d68d39f 100644
--- a/modules/user.views.inc
+++ b/modules/user.views.inc
@@ -59,7 +59,7 @@ function user_views_data() {
       'handler' => 'views_handler_filter_user_name',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'relationship' => array(
       'title' => t('Content authored'),
@@ -118,7 +118,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'argument' => array(
       'handler' => 'Drupal\views\Plugins\views\argument\String',
@@ -140,7 +140,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\String',
@@ -159,7 +159,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_node_language',
@@ -180,7 +180,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\BooleanOperator',
@@ -207,7 +207,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -278,7 +278,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -294,7 +294,7 @@ function user_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Date',
+      'plugin_id' => 'date'
     ),
     'filter' => array(
       'handler' => 'Drupal\views\Plugins\views\filter\Date',
@@ -319,7 +319,7 @@ function user_views_data() {
       'type' => 'yes-no',
     ),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\SortPluginBase',
+      'plugin_id' => 'standard',
     ),
   );
 
diff --git a/modules/views.views.inc b/modules/views.views.inc
index 362a72eca791..a474da19c503 100644
--- a/modules/views.views.inc
+++ b/modules/views.views.inc
@@ -21,7 +21,7 @@ function views_views_data() {
     'title' => t('Random'),
     'help' => t('Randomize the display order.'),
     'sort' => array(
-      'handler' => 'Drupal\views\Plugins\views\sort\Random',
+      'plugin_id' => 'random',
       ),
     );
 
diff --git a/views.api.php b/views.api.php
index 72ed887566cf..85cc25f3e23c 100644
--- a/views.api.php
+++ b/views.api.php
@@ -448,7 +448,7 @@ function hook_views_data() {
       'click sortable' => TRUE,
     ),
     'sort' => array(
-      'handler' => 'views_handler_sort_date',
+      'plugin_id' => 'date',
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_date',
diff --git a/views.module b/views.module
index ee7aa345347c..247504cacad9 100644
--- a/views.module
+++ b/views.module
@@ -25,6 +25,7 @@
 use Drupal\views\Plugins\Type\QueryPluginManager;
 use Drupal\views\Plugins\Type\RowPluginManager;
 use Drupal\views\Plugins\Type\ExposedFormPluginManager;
+use Drupal\views\Plugins\Type\HandlerPluginManager;
 
 /**
  * Advertise the current views api version
@@ -1415,6 +1416,9 @@ function views_get_plugin_manager($type) {
     case 'localization':
       $manager = new LocalizationPluginManager();
       break;
+    case 'sort':
+      $manager = new HandlerPluginManager('sort');
+      break;
   }
 
   return $manager;
-- 
GitLab