فهرست منبع

popsu_migrate: D7NodeTheme started, improved admin vue

bach 3 سال پیش
والد
کامیت
932709cb96

+ 1 - 0
config/sync/core.extension.yml

@@ -72,6 +72,7 @@ module:
   menu_link_content: 0
   menu_ui: 0
   migrate: 0
+  migrate_devel: 0
   migrate_drupal: 0
   migrate_plus: 0
   migrate_tools: 0

+ 1 - 1
config/sync/migrate_plus.migration.d7_allpublicfiles.yml

@@ -1,4 +1,4 @@
-uuid: 0f97d872-fa48-4944-81a8-90265be2094e
+uuid: d20b17c1-040b-4b8b-8453-2222fc71592c
 langcode: fr
 status: true
 dependencies: {  }

+ 50 - 0
config/sync/migrate_plus.migration.d7_node_popsu_ville.yml

@@ -0,0 +1,50 @@
+uuid: 095bb664-b9d9-496a-9bb9-132e03bfca69
+langcode: fr
+status: true
+dependencies: {  }
+_core:
+  default_config_hash: DEiEznlQsZHWFvplSNI6tTg2zhb8ezulEBACzsVtVUQ
+id: d7_node_popsu_ville
+class: null
+field_plugin_method: null
+cck_plugin_method: null
+migration_tags:
+  - 'Drupal 7'
+  - Content
+  - Popsu
+migration_group: popsu
+label: 'Node popsu ville'
+source:
+  plugin: d7_node_popsu_ville
+  node_type: popsu_ville
+  batch_size: 500
+  high_water_property:
+    name: changed
+    alias: 'n'
+process:
+  type:
+    plugin: default_value
+    default_value: projet
+  title: title
+  created: created
+  changed: changed
+  uid:
+    plugin: migration_lookup
+    migration: d7_users
+    source: uid
+  body:
+    plugin: iterator
+    source: field_description
+    process:
+      value: value
+      format:
+        plugin: default_value
+        default_value: wysiwyg
+destination:
+  plugin: 'entity:node'
+migration_dependencies:
+  required:
+    - d7_allpublicfiles
+    - d7_users
+    - d7_programmes
+    - d7_villes

+ 58 - 0
config/sync/migrate_plus.migration.d7_node_programme.yml

@@ -0,0 +1,58 @@
+uuid: e355cc82-250d-4523-8bf9-2ed714e29c62
+langcode: fr
+status: true
+dependencies: {  }
+_core:
+  default_config_hash: gnIlpxdQVO9VXb7quJw-fmpz3CX1GUXjMhjHmZ5w1YM
+id: d7_node_programme
+class: null
+field_plugin_method: null
+cck_plugin_method: null
+migration_tags:
+  - 'Drupal 7'
+  - Content
+  - Popsu
+migration_group: popsu
+label: 'Node Programme'
+source:
+  plugin: d7_node_programme
+  node_type: popsu_special
+  batch_size: 500
+  high_water_property:
+    name: changed
+    alias: 'n'
+process:
+  type:
+    plugin: default_value
+    default_value: programme
+  created: created
+  changed: changed
+  uid:
+    plugin: default_value
+    default_value: 34
+  title: term_title
+  body/value: body
+  body/summary: body_summary
+  body/format:
+    plugin: default_value
+    default_value: wysiwyg
+  field_textes: text_paragraphe
+  field_sous_parties: sous_parties
+  field_partenaires: partenaires
+  field_fichier:
+    plugin: sub_process
+    source: fichiers
+    process:
+      target_id:
+        plugin: migration_lookup
+        migration: d7_allpublicfiles
+        source: fid
+        no_stub: true
+      display: display
+      description: description
+destination:
+  plugin: 'entity:node'
+migration_dependencies:
+  required:
+    - d7_allpublicfiles
+    - d7_users

+ 38 - 0
config/sync/migrate_plus.migration.d7_node_theme.yml

@@ -0,0 +1,38 @@
+uuid: 624dc3c7-c811-4f32-9823-2ec65ed4373f
+langcode: fr
+status: true
+dependencies: {  }
+_core:
+  default_config_hash: QR9S8jsknIDqCYeApONkn5ndcCpazuyxJxCBUtUiqY8
+id: d7_node_theme
+class: null
+field_plugin_method: null
+cck_plugin_method: null
+migration_tags:
+  - 'Drupal 7'
+  - Content
+  - Popsu
+migration_group: popsu
+label: 'Node Theme'
+source:
+  plugin: d7_node_theme
+  batch_size: 500
+  high_water_property:
+    name: changed
+    alias: 'n'
+process:
+  type:
+    plugin: default_value
+    default_value: theme
+  created: created
+  changed: changed
+  title: title
+  uid:
+    plugin: default_value
+    default_value: 34
+destination:
+  plugin: 'entity:node'
+migration_dependencies:
+  required:
+    - d7_allpublicfiles
+    - d7_users

+ 2 - 3
config/sync/migrate_plus.migration.d7_users.yml

@@ -1,9 +1,9 @@
-uuid: 17350b9c-18b6-4716-b944-c09e2dd67163
+uuid: b10f68ec-8c19-4707-8775-140231d57142
 langcode: fr
 status: true
 dependencies: {  }
 _core:
-  default_config_hash: 7HNGRfzA6vYrhJVsS7Wm-d_g6sucSx6c_K48dpghcks
+  default_config_hash: mR9tehyJ35Hg9p6fRCGwtr-Whd1VHnD1_F-M9944bxc
 id: d7_users
 class: null
 field_plugin_method: null
@@ -46,7 +46,6 @@ process:
       method: row
       value:
         - 5
-        - 3
     -
       plugin: static_map
       source: roles

+ 2 - 2
config/sync/migrate_plus.migration_group.popsu.yml

@@ -1,5 +1,5 @@
-uuid: 325cb8a6-0ecb-4e58-9248-cc86c51e0047
-langcode: en
+uuid: dee3cb55-be5e-47a0-b208-ed23f47d014d
+langcode: fr
 status: true
 dependencies:
   enforced:

+ 1 - 0
config/sync/user.role.admin.yml

@@ -163,6 +163,7 @@ permissions:
   - 'translate static node'
   - 'update content translations'
   - 'use text format wysiwyg'
+  - 'use views bulk edit'
   - 'view actualite revisions'
   - 'view all revisions'
   - 'view autre_son revisions'

+ 55 - 1
config/sync/user.role.editeur.yml

@@ -6,4 +6,58 @@ id: editeur
 label: Editeur
 weight: -3
 is_admin: null
-permissions: {  }
+permissions:
+  - 'access administration pages'
+  - 'access content overview'
+  - 'access files overview'
+  - 'access site in maintenance mode'
+  - 'access toolbar'
+  - 'break content lock'
+  - 'change own username'
+  - 'create actualite content'
+  - 'create collection content'
+  - 'create evenement content'
+  - 'create programme content'
+  - 'create projet content'
+  - 'create ressource content'
+  - 'create static content'
+  - 'create terms in equipes'
+  - 'create terms in types_d_evenement'
+  - 'create terms in types_de_document'
+  - 'create terms in types_de_theme'
+  - 'create terms in villes'
+  - 'create theme content'
+  - 'edit any actualite content'
+  - 'edit any collection content'
+  - 'edit any evenement content'
+  - 'edit any programme content'
+  - 'edit any projet content'
+  - 'edit any ressource content'
+  - 'edit any static content'
+  - 'edit any theme content'
+  - 'edit terms in equipes'
+  - 'edit terms in types_d_evenement'
+  - 'edit terms in types_de_document'
+  - 'edit terms in types_de_theme'
+  - 'edit terms in villes'
+  - 'revert actualite revisions'
+  - 'revert all revisions'
+  - 'revert collection revisions'
+  - 'revert evenement revisions'
+  - 'revert programme revisions'
+  - 'revert projet revisions'
+  - 'revert ressource revisions'
+  - 'revert static revisions'
+  - 'revert theme revisions'
+  - 'use text format wysiwyg'
+  - 'view actualite revisions'
+  - 'view all revisions'
+  - 'view collection revisions'
+  - 'view evenement revisions'
+  - 'view own unpublished content'
+  - 'view programme revisions'
+  - 'view projet revisions'
+  - 'view ressource revisions'
+  - 'view static revisions'
+  - 'view the administration theme'
+  - 'view theme revisions'

+ 376 - 80
config/sync/views.view.content.yml

@@ -2,6 +2,9 @@ uuid: db0c124c-a260-4158-91e8-53b81d62a143
 langcode: fr
 status: true
 dependencies:
+  config:
+    - node.type.programme
+    - node.type.theme
   module:
     - node
     - user
@@ -176,14 +179,14 @@ display:
           settings:
             link_to_entity: true
           plugin_id: field
-        type:
-          id: type
-          table: node_field_data
-          field: type
+        operations:
+          id: operations
+          table: node
+          field: operations
           relationship: none
           group_type: group
           admin_label: ''
-          label: 'Type de contenu'
+          label: Actions
           exclude: false
           alter:
             alter_text: false
@@ -224,23 +227,8 @@ display:
           hide_empty: false
           empty_zero: false
           hide_alter_empty: true
-          click_sort_column: target_id
-          type: entity_reference_label
-          settings:
-            link: false
-          group_column: target_id
-          group_columns: {  }
-          group_rows: true
-          delta_limit: 0
-          delta_offset: 0
-          delta_reversed: false
-          delta_first_last: false
-          multi_type: separator
-          separator: ', '
-          field_api_classes: false
-          entity_type: node
-          entity_field: type
-          plugin_id: field
+          destination: true
+          plugin_id: entity_operations
         name:
           id: name
           table: users_field_data
@@ -304,56 +292,6 @@ display:
           plugin_id: field
           entity_type: node
           entity_field: changed
-        operations:
-          id: operations
-          table: node
-          field: operations
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: Actions
-          exclude: false
-          alter:
-            alter_text: false
-            text: ''
-            make_link: false
-            path: ''
-            absolute: false
-            external: false
-            replace_spaces: false
-            path_case: none
-            trim_whitespace: false
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: false
-            max_length: 0
-            word_boundary: true
-            ellipsis: true
-            more_link: false
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: false
-            trim: false
-            preserve_tags: ''
-            html: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: true
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_empty: false
-          empty_zero: false
-          hide_alter_empty: true
-          destination: true
-          plugin_id: entity_operations
       filters:
         title:
           id: title
@@ -405,15 +343,18 @@ display:
           group_type: group
           admin_label: ''
           operator: in
-          value: {  }
+          value:
+            theme: theme
           group: 1
-          exposed: true
+          exposed: false
           expose:
             operator_id: type_op
             label: 'Type de contenu'
             description: ''
             use_operator: false
             operator: type_op
+            operator_limit_selection: false
+            operator_list: {  }
             identifier: type
             required: false
             remember: false
@@ -423,8 +364,6 @@ display:
               anonymous: '0'
               administrator: '0'
             reduce: false
-            operator_limit_selection: false
-            operator_list: {  }
           is_grouped: false
           group_info:
             label: ''
@@ -544,7 +483,7 @@ display:
             operator_limit_selection: false
             operator_list: {  }
       sorts: {  }
-      title: Contenu
+      title: Themes
       empty:
         area_text_custom:
           id: area_text_custom
@@ -568,6 +507,17 @@ display:
         groups:
           1: AND
       display_extenders: {  }
+      header:
+        result:
+          id: result
+          table: views
+          field: result
+          relationship: none
+          group_type: group
+          admin_label: ''
+          empty: false
+          content: 'Affichage de @start à @end sur @total'
+          plugin_id: result
     display_plugin: default
     display_title: Maître
     id: default
@@ -585,7 +535,7 @@ display:
       tags: {  }
   page_1:
     display_options:
-      path: admin/content/node
+      path: admin/content/programme
       menu:
         type: 'default tab'
         title: Contenu
@@ -599,9 +549,165 @@ display:
         description: 'Trouver et gérer le contenu'
         menu_name: admin
         weight: -10
-      display_extenders: {  }
+      display_extenders:
+        views_ef_fieldset: {  }
+      display_description: ''
+      filters:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: contains
+          value: ''
+          group: 1
+          exposed: true
+          expose:
+            operator_id: title_op
+            label: Titre
+            description: ''
+            use_operator: false
+            operator: title_op
+            identifier: title
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+              anonymous: '0'
+              administrator: '0'
+            operator_limit_selection: false
+            operator_list: {  }
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items: {  }
+          plugin_id: string
+          entity_type: node
+          entity_field: title
+        type:
+          id: type
+          table: node_field_data
+          field: type
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: in
+          value:
+            programme: programme
+          group: 1
+          exposed: false
+          expose:
+            operator_id: type_op
+            label: 'Type de contenu'
+            description: ''
+            use_operator: false
+            operator: type_op
+            operator_limit_selection: false
+            operator_list: {  }
+            identifier: type
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+              anonymous: '0'
+              administrator: '0'
+            reduce: false
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items: {  }
+          plugin_id: bundle
+          entity_type: node
+          entity_field: type
+        status:
+          id: status
+          table: node_field_data
+          field: status
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: '='
+          value: '1'
+          group: 1
+          exposed: true
+          expose:
+            operator_id: ''
+            label: État
+            description: ''
+            use_operator: false
+            operator: status_op
+            identifier: status
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+            operator_limit_selection: false
+            operator_list: {  }
+          is_grouped: true
+          group_info:
+            label: 'Statut de publication'
+            description: ''
+            identifier: status
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items:
+              1:
+                title: Publié
+                operator: '='
+                value: '1'
+              2:
+                title: 'Non publié'
+                operator: '='
+                value: '0'
+          plugin_id: boolean
+          entity_type: node
+          entity_field: status
+        status_extra:
+          id: status_extra
+          table: node_field_data
+          field: status_extra
+          operator: '='
+          value: false
+          plugin_id: node_status
+          group: 1
+          entity_type: node
+          expose:
+            operator_limit_selection: false
+            operator_list: {  }
+      defaults:
+        filters: false
+        filter_groups: false
+      filter_groups:
+        operator: AND
+        groups:
+          1: AND
     display_plugin: page
-    display_title: Page
+    display_title: Programmes
     id: page_1
     position: 1
     cache_metadata:
@@ -615,3 +721,193 @@ display:
         - user.permissions
       max-age: 0
       tags: {  }
+  page_2:
+    display_options:
+      path: admin/content/themes
+      menu:
+        type: tab
+        title: Themes
+        description: ''
+        expanded: false
+        parent: system.admin_content
+        weight: -10
+        context: '0'
+        menu_name: admin
+      tab_options:
+        type: normal
+        title: Contenu
+        description: 'Trouver et gérer le contenu'
+        menu_name: admin
+        weight: -10
+      display_extenders:
+        views_ef_fieldset: {  }
+      display_description: ''
+      filters:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: contains
+          value: ''
+          group: 1
+          exposed: true
+          expose:
+            operator_id: title_op
+            label: Titre
+            description: ''
+            use_operator: false
+            operator: title_op
+            identifier: title
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+              anonymous: '0'
+              administrator: '0'
+            operator_limit_selection: false
+            operator_list: {  }
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items: {  }
+          plugin_id: string
+          entity_type: node
+          entity_field: title
+        type:
+          id: type
+          table: node_field_data
+          field: type
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: in
+          value:
+            theme: theme
+          group: 1
+          exposed: false
+          expose:
+            operator_id: type_op
+            label: 'Type de contenu'
+            description: ''
+            use_operator: false
+            operator: type_op
+            operator_limit_selection: false
+            operator_list: {  }
+            identifier: type
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+              anonymous: '0'
+              administrator: '0'
+            reduce: false
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items: {  }
+          plugin_id: bundle
+          entity_type: node
+          entity_field: type
+        status:
+          id: status
+          table: node_field_data
+          field: status
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: '='
+          value: '1'
+          group: 1
+          exposed: true
+          expose:
+            operator_id: ''
+            label: État
+            description: ''
+            use_operator: false
+            operator: status_op
+            identifier: status
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+            operator_limit_selection: false
+            operator_list: {  }
+          is_grouped: true
+          group_info:
+            label: 'Statut de publication'
+            description: ''
+            identifier: status
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: {  }
+            group_items:
+              1:
+                title: Publié
+                operator: '='
+                value: '1'
+              2:
+                title: 'Non publié'
+                operator: '='
+                value: '0'
+          plugin_id: boolean
+          entity_type: node
+          entity_field: status
+        status_extra:
+          id: status_extra
+          table: node_field_data
+          field: status_extra
+          operator: '='
+          value: false
+          plugin_id: node_status
+          group: 1
+          entity_type: node
+          expose:
+            operator_limit_selection: false
+            operator_list: {  }
+      defaults:
+        filters: false
+        filter_groups: false
+      filter_groups:
+        operator: AND
+        groups:
+          1: AND
+    display_plugin: page
+    display_title: Themes
+    id: page_2
+    position: 1
+    cache_metadata:
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url
+        - url.query_args
+        - user
+        - 'user.node_grants:view'
+        - user.permissions
+      max-age: 0
+      tags: {  }

+ 38 - 0
web/modules/custom/popsu_migrate/config/install/migrate_plus.migration.d7_node_theme.yml

@@ -0,0 +1,38 @@
+id: d7_node_theme
+label: Node Theme
+migration_group: popsu
+audit: true
+migration_tags:
+  - Drupal 7
+  - Content
+  - Popsu
+
+source:
+  plugin: d7_node_theme
+  # node_type: popsu_special
+  batch_size: 500
+  high_water_property:
+    name: changed
+    alias: n
+
+destination:
+  plugin: entity:node
+
+process:
+  # nid: nid
+  type:
+    plugin: default_value
+    default_value: theme
+  created: created
+  changed: changed
+
+  title: title
+
+  uid:
+    plugin: default_value
+    default_value: 34
+
+migration_dependencies:
+  required:
+    - d7_allpublicfiles
+    - d7_users

+ 154 - 0
web/modules/custom/popsu_migrate/src/Plugin/migrate/source/D7NodeTheme.php

@@ -0,0 +1,154 @@
+<?php
+namespace Drupal\popsu_migrate\Plugin\migrate\source;
+
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\d7\FieldableEntity;
+use Drupal\Core\Database\Query\SelectInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Extension\ModuleHandler;
+use Drupal\Core\State\StateInterface;
+use Drupal\migrate\Plugin\MigrationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Logger\LoggerChannelFactoryInterface;
+use Drush\Drush;
+
+// use Drupal\popsu_migrate\Plugin\migrate\source\D7Programme;
+
+/**
+ * Drupal 7 node source from database.
+ *
+ * @MigrateSource(
+ *   id = "d7_node_theme",
+ *   source_module = "node"
+ * )
+ */
+class D7NodeTheme extends FieldableEntity {
+  /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * The logger channel.
+   *
+   * @var \Drupal\Core\Logger\LoggerChannelInterface
+   */
+  protected $logger;
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, EntityTypeManagerInterface $entity_manager, ModuleHandlerInterface $module_handler,LoggerChannelFactoryInterface $loggerFactory) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state, $entity_manager);
+    $this->moduleHandler = $module_handler;
+    $this->logger = $loggerFactory->get('popsu_migration');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $migration,
+      $container->get('state'),
+      $container->get('entity_type.manager'),
+      $container->get('module_handler'),
+      $container->get('logger.factory')
+    );
+  }
+
+  /**
+   * The join options between the node and the node_revisions table.
+   */
+  const JOIN = 'n.vid = nr.vid';
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    // Select node in its last revision.
+    $query = $this->select('node_revision', 'nr')
+      ->fields('n', [
+        'nid',
+        'type',
+        'uid',
+        'language',
+        'status',
+        'created',
+        'changed',
+      ])
+      ->fields('nr', [
+        'vid',
+        'title',
+        'log',
+        'timestamp',
+      ])
+      ->orderBy('changed');
+
+    $query->addField('n', 'uid', 'node_uid');
+    $query->addField('nr', 'uid', 'revision_uid');
+    $query->innerJoin('node', 'n', static::JOIN);
+
+    $query->condition('n.type', ['popsu_theme_local', 'popsu_theme_trans', 'popsu_theme_europe'], 'IN');
+
+    return $query;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $nid = $row->getSourceProperty('nid');
+    $vid = $row->getSourceProperty('vid');
+    $type = $row->getSourceProperty('type');
+    $title = $row->getSourceProperty('title');
+    Drush::output()->writeln('- - - - ' . $title . '- - - - ');
+
+    // Get Field API field values.
+    foreach ($this->getFields('node', $type) as $field_name => $field) {
+      $row->setSourceProperty($field_name, $this->getFieldValues('node', $field_name, $nid, $vid, NULL));
+    }
+
+    return parent::prepareRow($row);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    $fields = [
+      'nid' => $this->t('Node ID'),
+      'type' => $this->t('Type'),
+      'title' => $this->t('Title'),
+      'node_uid' => $this->t('Node authored by (uid)'),
+      'revision_uid' => $this->t('Revision authored by (uid)'),
+      'created' => $this->t('Created timestamp'),
+      'changed' => $this->t('Modified timestamp'),
+      'status' => $this->t('Published'),
+      'promote' => $this->t('Promoted to front page'),
+      'sticky' => $this->t('Sticky at top of lists'),
+      'revision' => $this->t('Create new revision'),
+      'language' => $this->t('Language (fr, en, ...)'),
+      'tnid' => $this->t('The translation set id for this node'),
+      'timestamp' => $this->t('The timestamp the latest revision of this node was created.'),
+    ];
+    return $fields;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['nid']['type'] = 'integer';
+    $ids['nid']['alias'] = 'n';
+    return $ids;
+  }
+
+}