fixed duplicated events nodes in views

This commit is contained in:
Bachir Soussi Chiadmi 2025-05-26 14:53:21 +02:00
parent 2f49bb4a3c
commit 62981265f7
12 changed files with 180 additions and 46 deletions

View File

@ -9,6 +9,7 @@ dependencies:
- field.field.node.evenement.field_fichier - field.field.node.evenement.field_fichier
- field.field.node.evenement.field_image - field.field.node.evenement.field_image
- field.field.node.evenement.field_intro - 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_lien
- field.field.node.evenement.field_memo - field.field.node.evenement.field_memo
- field.field.node.evenement.field_organisateur - field.field.node.evenement.field_organisateur
@ -42,7 +43,7 @@ third_party_settings:
label: Tabs label: Tabs
region: content region: content
parent_name: '' parent_name: ''
weight: 20 weight: 1
format_type: tabs format_type: tabs
format_settings: format_settings:
classes: '' classes: ''
@ -77,7 +78,7 @@ third_party_settings:
label: Details label: Details
region: content region: content
parent_name: '' parent_name: ''
weight: 20 weight: 2
format_type: details_sidebar format_type: details_sidebar
format_settings: format_settings:
classes: '' classes: ''
@ -318,7 +319,7 @@ content:
third_party_settings: { } third_party_settings: { }
title: title:
type: string_textfield type: string_textfield
weight: -5 weight: 0
region: content region: content
settings: settings:
size: 60 size: 60
@ -326,6 +327,7 @@ content:
third_party_settings: { } third_party_settings: { }
hidden: hidden:
created: true created: true
field_last_date_only: true
langcode: true langcode: true
path: true path: true
sticky: true sticky: true

View File

@ -10,6 +10,7 @@ dependencies:
- field.field.node.evenement.field_fichier - field.field.node.evenement.field_fichier
- field.field.node.evenement.field_image - field.field.node.evenement.field_image
- field.field.node.evenement.field_intro - 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_lien
- field.field.node.evenement.field_memo - field.field.node.evenement.field_memo
- field.field.node.evenement.field_organisateur - field.field.node.evenement.field_organisateur
@ -78,6 +79,7 @@ hidden:
field_fichier: true field_fichier: true
field_image: true field_image: true
field_intro: true field_intro: true
field_last_date_only: true
field_lien: true field_lien: true
field_memo: true field_memo: true
field_organisateur: true field_organisateur: true

View File

@ -9,6 +9,7 @@ dependencies:
- field.field.node.evenement.field_fichier - field.field.node.evenement.field_fichier
- field.field.node.evenement.field_image - field.field.node.evenement.field_image
- field.field.node.evenement.field_intro - 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_lien
- field.field.node.evenement.field_memo - field.field.node.evenement.field_memo
- field.field.node.evenement.field_organisateur - field.field.node.evenement.field_organisateur
@ -39,7 +40,16 @@ content:
label: hidden label: hidden
settings: { } settings: { }
third_party_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 region: content
field_date: field_date:
type: datetime_default type: datetime_default
@ -48,7 +58,7 @@ content:
timezone_override: '' timezone_override: ''
format_type: medium format_type: medium
third_party_settings: { } third_party_settings: { }
weight: 109 weight: 7
region: content region: content
field_evenements_lies: field_evenements_lies:
type: entity_reference_label type: entity_reference_label
@ -56,7 +66,7 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 115 weight: 13
region: content region: content
field_fichier: field_fichier:
type: file_default type: file_default
@ -64,7 +74,7 @@ content:
settings: settings:
use_description_as_link_text: true use_description_as_link_text: true
third_party_settings: { } third_party_settings: { }
weight: 110 weight: 8
region: content region: content
field_image: field_image:
type: image type: image
@ -75,14 +85,14 @@ content:
image_loading: image_loading:
attribute: lazy attribute: lazy
third_party_settings: { } third_party_settings: { }
weight: 111 weight: 9
region: content region: content
field_intro: field_intro:
type: text_default type: text_default
label: above label: above
settings: { } settings: { }
third_party_settings: { } third_party_settings: { }
weight: 102 weight: 2
region: content region: content
field_lien: field_lien:
type: link type: link
@ -94,21 +104,21 @@ content:
rel: '' rel: ''
target: '' target: ''
third_party_settings: { } third_party_settings: { }
weight: 113 weight: 11
region: content region: content
field_memo: field_memo:
type: basic_string type: basic_string
label: above label: above
settings: { } settings: { }
third_party_settings: { } third_party_settings: { }
weight: 118 weight: 16
region: content region: content
field_organisateur: field_organisateur:
type: text_default type: text_default
label: above label: above
settings: { } settings: { }
third_party_settings: { } third_party_settings: { }
weight: 108 weight: 6
region: content region: content
field_partenaires: field_partenaires:
type: entity_reference_revisions_entity_view type: entity_reference_revisions_entity_view
@ -117,7 +127,7 @@ content:
view_mode: default view_mode: default
link: '' link: ''
third_party_settings: { } third_party_settings: { }
weight: 112 weight: 10
region: content region: content
field_programme: field_programme:
type: entity_reference_label type: entity_reference_label
@ -125,7 +135,7 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 104 weight: 4
region: content region: content
field_projet: field_projet:
type: entity_reference_label type: entity_reference_label
@ -133,7 +143,7 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 116 weight: 14
region: content region: content
field_promu_en_page_programme: field_promu_en_page_programme:
type: boolean type: boolean
@ -143,7 +153,7 @@ content:
format_custom_false: '' format_custom_false: ''
format_custom_true: '' format_custom_true: ''
third_party_settings: { } third_party_settings: { }
weight: 119 weight: 17
region: content region: content
field_ressources_liees: field_ressources_liees:
type: entity_reference_label type: entity_reference_label
@ -151,7 +161,7 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 114 weight: 12
region: content region: content
field_sous_titre: field_sous_titre:
type: string type: string
@ -159,7 +169,7 @@ content:
settings: settings:
link_to_entity: false link_to_entity: false
third_party_settings: { } third_party_settings: { }
weight: 107 weight: 5
region: content region: content
field_theme: field_theme:
type: entity_reference_label type: entity_reference_label
@ -167,7 +177,7 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 117 weight: 15
region: content region: content
field_type_evenement: field_type_evenement:
type: entity_reference_label type: entity_reference_label
@ -175,13 +185,14 @@ content:
settings: settings:
link: true link: true
third_party_settings: { } third_party_settings: { }
weight: 103 weight: 3
region: content region: content
links: links:
settings: { } settings: { }
third_party_settings: { } third_party_settings: { }
weight: 100 weight: 0
region: content region: content
hidden: hidden:
field_last_date_only: true
langcode: true langcode: true
search_api_excerpt: true search_api_excerpt: true

View File

@ -10,6 +10,7 @@ dependencies:
- field.field.node.evenement.field_fichier - field.field.node.evenement.field_fichier
- field.field.node.evenement.field_image - field.field.node.evenement.field_image
- field.field.node.evenement.field_intro - 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_lien
- field.field.node.evenement.field_memo - field.field.node.evenement.field_memo
- field.field.node.evenement.field_organisateur - field.field.node.evenement.field_organisateur
@ -69,6 +70,7 @@ hidden:
field_evenements_lies: true field_evenements_lies: true
field_fichier: true field_fichier: true
field_intro: true field_intro: true
field_last_date_only: true
field_lien: true field_lien: true
field_memo: true field_memo: true
field_organisateur: true field_organisateur: true

View File

@ -121,6 +121,7 @@ module:
phpass: 0 phpass: 0
popsu_link_block: 0 popsu_link_block: 0
popsu_programme: 0 popsu_programme: 0
popsu_uniqdate: 0
redirect: 0 redirect: 0
redis: 0 redis: 0
responsive_image: 0 responsive_image: 0

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,5 @@
uuid: 6524248b-fa9a-428b-9186-2c00c3d8b7b0 uuid: 6524248b-fa9a-428b-9186-2c00c3d8b7b0
langcode: en langcode: fr
status: true status: true
dependencies: dependencies:
module: module:

View File

@ -1,5 +1,5 @@
uuid: b72de79a-02bf-424d-9bf3-03ffbda0f29a uuid: b72de79a-02bf-424d-9bf3-03ffbda0f29a
langcode: en langcode: fr
status: true status: true
dependencies: dependencies:
module: module:

View File

@ -153,6 +153,16 @@ display:
force_chronological: false force_chronological: false
add_classes: false add_classes: false
time_wrapper: false time_wrapper: false
localize: false
parts:
start: start
end: end
duration: '0'
duration:
separator: ' | '
unit: ''
decimals: 2
suffix: h
group_column: value group_column: value
group_columns: { } group_columns: { }
group_rows: true group_rows: true
@ -442,10 +452,10 @@ display:
options: { } options: { }
empty: { } empty: { }
sorts: sorts:
field_date_value: field_last_date_only_value:
id: field_date_value id: field_last_date_only_value
table: node__field_date table: node__field_last_date_only
field: field_date_value field: field_last_date_only_value
relationship: none relationship: none
group_type: group group_type: group
admin_label: '' admin_label: ''
@ -453,23 +463,7 @@ display:
order: DESC order: DESC
expose: expose:
label: '' label: ''
field_identifier: field_date_value field_identifier: ''
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
exposed: false exposed: false
granularity: second granularity: second
arguments: arguments:
@ -519,13 +513,15 @@ display:
options: options:
query_comment: '' query_comment: ''
disable_sql_rewrite: false disable_sql_rewrite: false
distinct: false distinct: true
replica: false replica: false
query_tags: { } query_tags: { }
relationships: { } relationships: { }
group_by: false
header: { } header: { }
footer: { } footer: { }
display_extenders: { } display_extenders:
views_ef_fieldset: { }
cache_metadata: cache_metadata:
max-age: -1 max-age: -1
contexts: contexts:

View File

@ -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:

View File

@ -0,0 +1,73 @@
<?php
use Drupal\node\Entity\Node;
// use Drupal\Core\Entity\EntityTypeInterface;
// use Drupal\Core\Field\BaseFieldDefinition;
// use Drupal\Core\Field\FieldStorageDefinitionInterface;
// https://www.drupal.org/project/drupal/issues/2916266#comment-12301574
function popsu_uniqdate_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->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',
// ],
// ];
// }
// }