From 62981265f7d2d18ab4f72047599ddff18e68d52c Mon Sep 17 00:00:00 2001 From: bach Date: Mon, 26 May 2025 14:53:21 +0200 Subject: [PATCH] fixed duplicated events nodes in views --- ...ty_form_display.node.evenement.default.yml | 8 +- ...splay.node.evenement.accroche_ss_image.yml | 2 + ...ty_view_display.node.evenement.default.yml | 47 +++++++----- ...ity_view_display.node.evenement.teaser.yml | 2 + config/sync/core.extension.yml | 1 + ...ld.node.evenement.field_last_date_only.yml | 21 ++++++ ...ield.storage.node.field_last_date_only.yml | 20 +++++ .../sync/system.action.immediate_delete.yml | 2 +- .../system.action.mark_file_for_deletion.yml | 2 +- config/sync/views.view.actus_blocks.yml | 42 +++++------ .../popsu_uniqdate/popsu_uniqdate.info.yml | 6 ++ .../popsu_uniqdate/popsu_uniqdate.module | 73 +++++++++++++++++++ 12 files changed, 180 insertions(+), 46 deletions(-) create mode 100644 config/sync/field.field.node.evenement.field_last_date_only.yml create mode 100644 config/sync/field.storage.node.field_last_date_only.yml create mode 100644 web/modules/custom/popsu_uniqdate/popsu_uniqdate.info.yml create mode 100644 web/modules/custom/popsu_uniqdate/popsu_uniqdate.module diff --git a/config/sync/core.entity_form_display.node.evenement.default.yml b/config/sync/core.entity_form_display.node.evenement.default.yml index a69b091c..3dc0e32d 100644 --- a/config/sync/core.entity_form_display.node.evenement.default.yml +++ b/config/sync/core.entity_form_display.node.evenement.default.yml @@ -9,6 +9,7 @@ dependencies: - field.field.node.evenement.field_fichier - field.field.node.evenement.field_image - field.field.node.evenement.field_intro + - field.field.node.evenement.field_last_date_only - field.field.node.evenement.field_lien - field.field.node.evenement.field_memo - field.field.node.evenement.field_organisateur @@ -42,7 +43,7 @@ third_party_settings: label: Tabs region: content parent_name: '' - weight: 20 + weight: 1 format_type: tabs format_settings: classes: '' @@ -77,7 +78,7 @@ third_party_settings: label: Details region: content parent_name: '' - weight: 20 + weight: 2 format_type: details_sidebar format_settings: classes: '' @@ -318,7 +319,7 @@ content: third_party_settings: { } title: type: string_textfield - weight: -5 + weight: 0 region: content settings: size: 60 @@ -326,6 +327,7 @@ content: third_party_settings: { } hidden: created: true + field_last_date_only: true langcode: true path: true sticky: true diff --git a/config/sync/core.entity_view_display.node.evenement.accroche_ss_image.yml b/config/sync/core.entity_view_display.node.evenement.accroche_ss_image.yml index e8e1b998..c92aafab 100644 --- a/config/sync/core.entity_view_display.node.evenement.accroche_ss_image.yml +++ b/config/sync/core.entity_view_display.node.evenement.accroche_ss_image.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.evenement.field_fichier - field.field.node.evenement.field_image - field.field.node.evenement.field_intro + - field.field.node.evenement.field_last_date_only - field.field.node.evenement.field_lien - field.field.node.evenement.field_memo - field.field.node.evenement.field_organisateur @@ -78,6 +79,7 @@ hidden: field_fichier: true field_image: true field_intro: true + field_last_date_only: true field_lien: true field_memo: true field_organisateur: true diff --git a/config/sync/core.entity_view_display.node.evenement.default.yml b/config/sync/core.entity_view_display.node.evenement.default.yml index 75421628..1c2c24d7 100644 --- a/config/sync/core.entity_view_display.node.evenement.default.yml +++ b/config/sync/core.entity_view_display.node.evenement.default.yml @@ -9,6 +9,7 @@ dependencies: - field.field.node.evenement.field_fichier - field.field.node.evenement.field_image - field.field.node.evenement.field_intro + - field.field.node.evenement.field_last_date_only - field.field.node.evenement.field_lien - field.field.node.evenement.field_memo - field.field.node.evenement.field_organisateur @@ -39,7 +40,16 @@ content: label: hidden settings: { } third_party_settings: { } - weight: 101 + weight: 1 + region: content + computed_date_unique: + type: datetime_default + label: hidden + settings: + timezone_override: '' + format_type: medium + third_party_settings: { } + weight: -5 region: content field_date: type: datetime_default @@ -48,7 +58,7 @@ content: timezone_override: '' format_type: medium third_party_settings: { } - weight: 109 + weight: 7 region: content field_evenements_lies: type: entity_reference_label @@ -56,7 +66,7 @@ content: settings: link: true third_party_settings: { } - weight: 115 + weight: 13 region: content field_fichier: type: file_default @@ -64,7 +74,7 @@ content: settings: use_description_as_link_text: true third_party_settings: { } - weight: 110 + weight: 8 region: content field_image: type: image @@ -75,14 +85,14 @@ content: image_loading: attribute: lazy third_party_settings: { } - weight: 111 + weight: 9 region: content field_intro: type: text_default label: above settings: { } third_party_settings: { } - weight: 102 + weight: 2 region: content field_lien: type: link @@ -94,21 +104,21 @@ content: rel: '' target: '' third_party_settings: { } - weight: 113 + weight: 11 region: content field_memo: type: basic_string label: above settings: { } third_party_settings: { } - weight: 118 + weight: 16 region: content field_organisateur: type: text_default label: above settings: { } third_party_settings: { } - weight: 108 + weight: 6 region: content field_partenaires: type: entity_reference_revisions_entity_view @@ -117,7 +127,7 @@ content: view_mode: default link: '' third_party_settings: { } - weight: 112 + weight: 10 region: content field_programme: type: entity_reference_label @@ -125,7 +135,7 @@ content: settings: link: true third_party_settings: { } - weight: 104 + weight: 4 region: content field_projet: type: entity_reference_label @@ -133,7 +143,7 @@ content: settings: link: true third_party_settings: { } - weight: 116 + weight: 14 region: content field_promu_en_page_programme: type: boolean @@ -143,7 +153,7 @@ content: format_custom_false: '' format_custom_true: '' third_party_settings: { } - weight: 119 + weight: 17 region: content field_ressources_liees: type: entity_reference_label @@ -151,7 +161,7 @@ content: settings: link: true third_party_settings: { } - weight: 114 + weight: 12 region: content field_sous_titre: type: string @@ -159,7 +169,7 @@ content: settings: link_to_entity: false third_party_settings: { } - weight: 107 + weight: 5 region: content field_theme: type: entity_reference_label @@ -167,7 +177,7 @@ content: settings: link: true third_party_settings: { } - weight: 117 + weight: 15 region: content field_type_evenement: type: entity_reference_label @@ -175,13 +185,14 @@ content: settings: link: true third_party_settings: { } - weight: 103 + weight: 3 region: content links: settings: { } third_party_settings: { } - weight: 100 + weight: 0 region: content hidden: + field_last_date_only: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.evenement.teaser.yml b/config/sync/core.entity_view_display.node.evenement.teaser.yml index 7b9e1db4..9234418e 100644 --- a/config/sync/core.entity_view_display.node.evenement.teaser.yml +++ b/config/sync/core.entity_view_display.node.evenement.teaser.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.evenement.field_fichier - field.field.node.evenement.field_image - field.field.node.evenement.field_intro + - field.field.node.evenement.field_last_date_only - field.field.node.evenement.field_lien - field.field.node.evenement.field_memo - field.field.node.evenement.field_organisateur @@ -69,6 +70,7 @@ hidden: field_evenements_lies: true field_fichier: true field_intro: true + field_last_date_only: true field_lien: true field_memo: true field_organisateur: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index a91ba980..5f8a74cb 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -121,6 +121,7 @@ module: phpass: 0 popsu_link_block: 0 popsu_programme: 0 + popsu_uniqdate: 0 redirect: 0 redis: 0 responsive_image: 0 diff --git a/config/sync/field.field.node.evenement.field_last_date_only.yml b/config/sync/field.field.node.evenement.field_last_date_only.yml new file mode 100644 index 00000000..eafd1b14 --- /dev/null +++ b/config/sync/field.field.node.evenement.field_last_date_only.yml @@ -0,0 +1,21 @@ +uuid: 16f921b2-5e9e-4230-98c2-c8d5cf0fe09a +langcode: fr +status: true +dependencies: + config: + - field.storage.node.field_last_date_only + - node.type.evenement + module: + - datetime +id: node.evenement.field_last_date_only +field_name: field_last_date_only +entity_type: node +bundle: evenement +label: 'last date only' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: datetime diff --git a/config/sync/field.storage.node.field_last_date_only.yml b/config/sync/field.storage.node.field_last_date_only.yml new file mode 100644 index 00000000..8291e2d0 --- /dev/null +++ b/config/sync/field.storage.node.field_last_date_only.yml @@ -0,0 +1,20 @@ +uuid: f29abaf8-e11e-4a19-8e1b-1b5487159376 +langcode: fr +status: true +dependencies: + module: + - datetime + - node +id: node.field_last_date_only +field_name: field_last_date_only +entity_type: node +type: datetime +settings: + datetime_type: datetime +module: datetime +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/system.action.immediate_delete.yml b/config/sync/system.action.immediate_delete.yml index 5df1e148..c310b06e 100644 --- a/config/sync/system.action.immediate_delete.yml +++ b/config/sync/system.action.immediate_delete.yml @@ -1,5 +1,5 @@ uuid: 6524248b-fa9a-428b-9186-2c00c3d8b7b0 -langcode: en +langcode: fr status: true dependencies: module: diff --git a/config/sync/system.action.mark_file_for_deletion.yml b/config/sync/system.action.mark_file_for_deletion.yml index e93b5964..73a6335f 100644 --- a/config/sync/system.action.mark_file_for_deletion.yml +++ b/config/sync/system.action.mark_file_for_deletion.yml @@ -1,5 +1,5 @@ uuid: b72de79a-02bf-424d-9bf3-03ffbda0f29a -langcode: en +langcode: fr status: true dependencies: module: diff --git a/config/sync/views.view.actus_blocks.yml b/config/sync/views.view.actus_blocks.yml index d9530707..1cf4e148 100644 --- a/config/sync/views.view.actus_blocks.yml +++ b/config/sync/views.view.actus_blocks.yml @@ -153,6 +153,16 @@ display: force_chronological: false add_classes: false time_wrapper: false + localize: false + parts: + start: start + end: end + duration: '0' + duration: + separator: ' | ' + unit: '' + decimals: 2 + suffix: h group_column: value group_columns: { } group_rows: true @@ -442,10 +452,10 @@ display: options: { } empty: { } sorts: - field_date_value: - id: field_date_value - table: node__field_date - field: field_date_value + field_last_date_only_value: + id: field_last_date_only_value + table: node__field_last_date_only + field: field_last_date_only_value relationship: none group_type: group admin_label: '' @@ -453,23 +463,7 @@ display: order: DESC expose: label: '' - field_identifier: field_date_value - exposed: false - granularity: second - created: - id: created - table: node_field_data - field: created - relationship: none - group_type: group - admin_label: '' - entity_type: node - entity_field: created - plugin_id: date - order: DESC - expose: - label: '' - field_identifier: created + field_identifier: '' exposed: false granularity: second arguments: @@ -519,13 +513,15 @@ display: options: query_comment: '' disable_sql_rewrite: false - distinct: false + distinct: true replica: false query_tags: { } relationships: { } + group_by: false header: { } footer: { } - display_extenders: { } + display_extenders: + views_ef_fieldset: { } cache_metadata: max-age: -1 contexts: diff --git a/web/modules/custom/popsu_uniqdate/popsu_uniqdate.info.yml b/web/modules/custom/popsu_uniqdate/popsu_uniqdate.info.yml new file mode 100644 index 00000000..0e81babd --- /dev/null +++ b/web/modules/custom/popsu_uniqdate/popsu_uniqdate.info.yml @@ -0,0 +1,6 @@ +name: Popsu Uniqdate +type: module +description: misc plugins for popsu's programmes. +core_version_requirement: ^8.8 || ^9 || ^10 +package: Popsu +dependencies: diff --git a/web/modules/custom/popsu_uniqdate/popsu_uniqdate.module b/web/modules/custom/popsu_uniqdate/popsu_uniqdate.module new file mode 100644 index 00000000..195b0761 --- /dev/null +++ b/web/modules/custom/popsu_uniqdate/popsu_uniqdate.module @@ -0,0 +1,73 @@ +getEntityTypeId() === 'node' && $entity->bundle() === 'evenement') { + if ($entity->hasField('field_date') && !$entity->get('field_date')->isEmpty()) { + // $first_term = $entity->get('field_tags')->first()->target_id; + $dates = $entity->get('field_date')->getValue(); + asort($dates); + $last_date = array_pop($dates); + $entity->set('field_last_date_only', $last_date); + } + else { + $entity->set('field_last_date_only', NULL); + } + } +} + +// /** +// * Implement hook_entity_bundle_field_info(). +// * +// * @param EntityTypeInterface $entity_type +// * @param $bundle +// * @param array $base_field_definitions +// * @return array +// */ +// function popsu_uniqdate_entity_bundle_field_info(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) { +// if ($entity_type->id() == 'node' && $bundle == 'evenement') { +// $fields['computed_date_unique'] = BaseFieldDefinition::create('datetime') +// ->setName('computed_date_unique') +// ->setLabel(t('Computed Date Unique')) +// ->setDescription(t('Computed Date Unique.')) +// // // The Entity Type this field belongs to. +// ->setTargetEntityTypeId($entity_type->id()) +// // // The Entity Type bundle this field belongs to. +// ->setTargetBundle($bundle) +// // ->setSetting('target_type', 'node') +// ->setCardinality(1) +// ->setComputed(TRUE) +// ->setRevisionable(FALSE) +// ->setTranslatable(FALSE) +// ->setDisplayConfigurable('view', TRUE) +// ->setDisplayOptions('view', [ +// 'label' => 'hidden', +// 'weight' => -5, +// ]) +// ->setClass(\Drupal\popsu_uniqdate\Plugin\Field\FieldType\ComputedUniqDate::class); + +// return $fields; +// } +// } + + +// /** +// * Implements hook_views_data_alter(). +// */ +// function popsu_uniqdate_views_data_alter(array &$data) { +// if (isset($data['node'])) { +// // Add the Computed Date Unique field to Views. +// $data['node']['computed_date_unique'] = [ +// 'title' => t('Computed Date Unique'), +// 'field' => [ +// 'id' => 'views_computed_date_unique', +// ], +// ]; +// } +// } \ No newline at end of file