diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 7c8b44ff..801bdf19 100644 --- a/config/sync/core.extension.yml +++ b/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 diff --git a/config/sync/migrate_plus.migration.d7_allpublicfiles.yml b/config/sync/migrate_plus.migration.d7_allpublicfiles.yml index 8acb6058..303caff1 100644 --- a/config/sync/migrate_plus.migration.d7_allpublicfiles.yml +++ b/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: { } diff --git a/config/sync/migrate_plus.migration.d7_node_popsu_ville.yml b/config/sync/migrate_plus.migration.d7_node_popsu_ville.yml new file mode 100644 index 00000000..3e5b70b8 --- /dev/null +++ b/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 diff --git a/config/sync/migrate_plus.migration.d7_node_programme.yml b/config/sync/migrate_plus.migration.d7_node_programme.yml new file mode 100644 index 00000000..519a72fa --- /dev/null +++ b/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 diff --git a/config/sync/migrate_plus.migration.d7_node_theme.yml b/config/sync/migrate_plus.migration.d7_node_theme.yml new file mode 100644 index 00000000..4d9ca99b --- /dev/null +++ b/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 diff --git a/config/sync/migrate_plus.migration.d7_users.yml b/config/sync/migrate_plus.migration.d7_users.yml index c8a5bee5..603fd817 100644 --- a/config/sync/migrate_plus.migration.d7_users.yml +++ b/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 diff --git a/config/sync/migrate_plus.migration_group.popsu.yml b/config/sync/migrate_plus.migration_group.popsu.yml index 8a5151c7..ad370e5c 100644 --- a/config/sync/migrate_plus.migration_group.popsu.yml +++ b/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: diff --git a/config/sync/user.role.admin.yml b/config/sync/user.role.admin.yml index fb3620e8..7f8953f1 100644 --- a/config/sync/user.role.admin.yml +++ b/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' diff --git a/config/sync/user.role.editeur.yml b/config/sync/user.role.editeur.yml index 2e72dc9a..7e91166e 100644 --- a/config/sync/user.role.editeur.yml +++ b/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' diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 546d8977..df54985a 100644 --- a/config/sync/views.view.content.yml +++ b/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: { } diff --git a/web/modules/custom/popsu_migrate/config/install/migrate_plus.migration.d7_node_theme.yml b/web/modules/custom/popsu_migrate/config/install/migrate_plus.migration.d7_node_theme.yml new file mode 100644 index 00000000..6209e97c --- /dev/null +++ b/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 diff --git a/web/modules/custom/popsu_migrate/src/Plugin/migrate/source/D7NodeTheme.php b/web/modules/custom/popsu_migrate/src/Plugin/migrate/source/D7NodeTheme.php new file mode 100644 index 00000000..9a99abda --- /dev/null +++ b/web/modules/custom/popsu_migrate/src/Plugin/migrate/source/D7NodeTheme.php @@ -0,0 +1,154 @@ +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; + } + +}